SQL क्वेरी से फ़ंक्शन को कॉल करने के लिए, आपको निम्न उदाहरण के अनुसार पैरामीटर को अपने कस्टम प्रकार में डालना होगा।
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)
])
ध्यान दें कि PostgreSQL सरणियों में .COUNT संपत्ति नहीं है। आप array_upper समारोह:
for i IN 1..array_upper(formdetails, 1)
LOOP
-- your code here
END LOOP;
PostgreSQL 9.1 के बाद से, आप सरणी के माध्यम से लूप करने के लिए FOREACH कथन का उपयोग कर सकते हैं:
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;