sql >> Database >  >> RDS >> PostgreSQL

door de gebruiker gedefinieerd type als invoerparameters in de PostgreSQL-functie

Om de functie aan te roepen vanuit een SQL-query, moet u de parameters naar uw aangepaste type casten, zoals in het volgende voorbeeld.

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

Houd er rekening mee dat PostgreSQL-arrays geen eigenschap .COUNT hebben. U kunt een array doorlopen op indexbereik met array_upper functie:

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

Sinds PostgreSQL 9.1 kunt u de FOREACH-instructie gebruiken om door de array te lopen:

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. Hoe COERCIBILITY() werkt in MariaDB

  2. MYSQL TIMEDIFF-functie werkt niet voor lange datum

  3. hoe alle databases te laten vallen, behalve enkele in postgres

  4. meerdere bestandsindelingen uploaden naar een server met behulp van jsp en het pad opslaan in de database