2010-11-25 10 views
12

मैं काम करने के लिए इस plpgsql समारोह पाने के लिए कोशिश कर रहा हूँ:plpgsql फ़ंक्शन तालिका (..)

CREATE OR REPLACE FUNCTION outofdate(actualdate varchar) 
RETURNS TABLE(designacion varchar(255),timebeingrotten varchar(255)) 
AS $BODY$ 

SELECT designacao, actualdate - prazo 
FROM alimento 
WHERE prazo < actualdate; 
$BODY$ 
LANGUAGE 'plpgsql' volatile; 

SELECT * 
From outofdate('12/12/2012'); 

यह मुझे लाइन 2 पर एक त्रुटि दे रहता है - मेज ..

ERROR: syntax error at or near "TABLE" LINE 2: RETURNS TABLE(designacion varchar(255),timebeingrotten varch... ^

*** Error ***

ERROR: syntax error at or near "TABLE" SQL state: 42601 Character: 67

उत्तर

39

मुझे यकीन नहीं है, लेकिन शायद आप RETURNS TABLE वाक्यविन्यास के समर्थन के बिना पीजी के पुराने संस्करण का उपयोग कर सकते हैं। आपके उदाहरण में अगली समस्या पीएल/पीजीएसक्यूएल भाषा के लिए गलत वाक्यविन्यास है - वाक्यविन्यास के लिए मैन्युअल देखें - प्रत्येक फ़ंक्शन में BEGIN ... END के साथ एक ब्लॉक होना चाहिए। रिकॉर्ड्स RETURN QUERY कथन के माध्यम से वापस किया जा सकता है। इस tutorial पर एक नज़र डालें।

CREATE OR REPLACE FUNCTION foo(a int) 
RETURNS TABLE(b int, c int) AS $$ 
BEGIN 
    RETURN QUERY SELECT i, i+1 FROM generate_series(1, a) g(i); 
END; 
$$ LANGUAGE plpgsql; 

कॉल:

SELECT * FROM foo(10); 
संबंधित मुद्दे