CREATE OR REPLACE FUNCTION for_example()
RETURNS integer AS
$func$
DECLARE
r "WEBHOST";
b "WEBHOST"[]; -- this works
BEGIN
FOR r IN
SELECT * FROM "WEBHOST"
LOOP
b := b || r; -- this, too
END LOOP;
RAISE NOTICE '%', b; -- get feedback
RETURN 33;
END
$func$ LANGUAGE plpgsql; -- and lose the quotes
%rowtype
आम तौर पर आवश्यक नहीं है। आम तौर पर, किसी तालिका का संबद्ध पंक्ति प्रकार उसी नाम के प्रकार के रूप में उपलब्ध होता है।
और नहीं करें भाषा का नाम उद्धृत करें।
और आप plpgsql में केवल स्टैंड-अलोन फ़ंक्शन कॉल नहीं कर सकते। . इसके बजाय एक असाइनमेंट का उपयोग करना।
Postgres में CaMeL- केस आइडेंटिफ़ायर का उपयोग करना भी एक अच्छा विचार नहीं है। अपने जीवन को आसान बनाने के लिए कानूनी, लोअर-केस आइडेंटिफ़ायर का उपयोग करें।
आखिरी के लिए सर्वश्रेष्ठ :यह समग्र फ़ंक्शन array_agg()
:
CREATE OR REPLACE FUNCTION for_example()
RETURNS integer AS
$func$
DECLARE
b "WEBHOST"[];
BEGIN
SELECT array_agg(tbl) INTO b FROM "WEBHOST" tbl;
RAISE NOTICE '%', b;
RETURN 33;
END
$func$ LANGUAGE plpgsql;