PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

tipe yang ditentukan pengguna sebagai parameter input dalam fungsi PostgreSQL

Untuk memanggil fungsi dari kueri SQL, Anda harus mentransmisikan parameter ke jenis kustom Anda seperti pada contoh berikut.

select form_insertion(array[
    cast(row('Form 1', 1, current_date, 1, current_date, 'This is form 1', 
        array[
            cast(row('section-1', 'Section One', 1) as section),
            cast(row('section-2', 'Section Two', 2) as section),
            cast(row('section-3', 'Section Three', 3) as section)
        ]
    ) as form_details),
    cast(row('Form 2', 2, current_date, 1, current_date, 'This is form 2', 
        array[
            cast(row('section-2', 'Section Two', 2) as section),
            cast(row('section-3', 'Section Three', 3) as section)
        ]
    ) as form_details),
    cast(row('Form 3', 1, current_date, 1, current_date, 'This is form 3', 
        array[
            cast(row('section-1', 'Section One', 1) as section),
            cast(row('section-3', 'Section Three', 3) as section)
        ]
    ) as form_details)
])

Perhatikan bahwa array PostgreSQL tidak memiliki properti .COUNT. Anda dapat mengulangi array menurut rentang indeks dengan array_upper fungsi:

for i IN 1..array_upper(formdetails, 1)
LOOP 
   -- your code here
END LOOP;

Sejak PostgreSQL 9.1, Anda dapat menggunakan pernyataan FOREACH untuk mengulang array:

create or replace function form_insertion(formdetails form_details[])
    returns varchar as $$
declare
    detail form_details;
    sec section;
begin
    foreach detail in array formdetails
    LOOP 
       RAISE NOTICE '%', detail.formName;

       foreach sec in array detail.sections
       LOOP
         raise NOTICE '%', sec.sectionName;
       END LOOP;
    END LOOP;
    return '';
end;$$
    language plpgsql;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostGIS Beraksi

  2. Heroku Postgres:Terlalu banyak koneksi. Bagaimana cara mematikan koneksi ini?

  3. Rails 4 custom 404 menyebabkan kegagalan koneksi postgresql di Heroku

  4. Tanggal dan waktu di UTC - bagaimana cara menyimpannya di postgres?

  5. SQLAlchemy:Periksa apakah nilai yang diberikan ada dalam daftar