पंक्ति प्रकार के बजाय अलग-अलग कॉलम प्राप्त करने के लिए, फ़ंक्शन को कॉल करें:
SELECT * FROM testfunction();
जैसे आप किसी तालिका से सभी स्तंभों का चयन करेंगे।
अपने परीक्षण कार्य के इस समीक्षा किए गए रूप पर भी विचार करें:
CREATE OR REPLACE FUNCTION testfunction()
RETURNS TABLE(a int, b int)
LANGUAGE plpgsql AS
$func$
DECLARE
_a int := 0;
_b int := 0;
BEGIN
CREATE TABLE tempTable AS SELECT _a, _b;
RETURN QUERY SELECT * FROM tempTable;
DROP TABLE tempTable;
END
$func$;
विशेष रूप से:
DECLARE
कुंजी शब्द केवल एक बार आवश्यक है।
ऐसे पैरामीटर घोषित करने से बचें जो पहले से ही (निहित रूप से) OUT
. के रूप में घोषित किए गए हैं RETURNS TABLE (...)
. में पैरामीटर खंड।
Postgres में गैर-उद्धृत CaMeL- केस पहचानकर्ताओं का उपयोग न करें। यह काम करता है, गैर-उद्धृत पहचानकर्ता निचले मामले में डाले जाते हैं, लेकिन इससे भ्रमित त्रुटियां हो सकती हैं। देखें:
- क्या PostgreSQL कॉलम नाम केस-संवेदी हैं?
उदाहरण में अस्थायी तालिका पूरी तरह से बेकार है (शायद अधिक सरलीकृत)। दिए गए उदाहरण में उबाल आता है:
CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
LANGUAGE plpgsql AS
$func$
BEGIN
a := 0;
b := 0;
END
$func$;