我正在尝试让这个 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
最佳答案
我不确定,但也许您使用的是不支持 RETURNS TABLE
语法的旧版本 pg。您的示例中的下一个问题是 PL/pgSQL 语言的错误语法 - 请查看语法手册 - 每个函数都必须包含一个带有 BEGIN ... END
的 block 。可以通过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);
关于postgresql - plpgsql 函数返回表(..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279876/