PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

typ zdefiniowany przez użytkownika jako parametry wejściowe w funkcji PostgreSQL

Aby wywołać funkcję z zapytania SQL, musisz rzutować parametry na swój niestandardowy typ, jak w poniższym przykładzie.

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)
])

Pamiętaj, że tablice PostgreSQL nie mają właściwości .COUNT. Możesz iterować po tablicy według zakresu indeksów za pomocą tablica_górna funkcja:

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

Od wersji PostgreSQL 9.1 możesz użyć instrukcji FOREACH do przechodzenia przez tablicę:

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. Dlaczego otrzymuję ten błąd podczas migracji danych z SQL Lite do Posgres DB? zduplikowana wartość klucza narusza ograniczenie unikalności

  2. PL/Python i postgreSQL:Jaki jest najlepszy sposób na zwrócenie tabeli z wieloma kolumnami?

  3. PostgreSQL Composite klucz podstawowy i przyrost seryjny?

  4. Czy istnieje spadek wydajności przy użyciu dziesiętnych typów danych (MySQL / Postgres)

  5. Rejestrowanie audytów dla PostgreSQL