PL/pgSQL函数返回表格(..)。

15

我正在尝试使这个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');

我的代码一直在第二行出错——table..

错误:在“表”附近的语法错误 第2行:RETURNS TABLE(designacion varchar(255),timebeingrotten varch... ^

*** 错误 ***

错误:在“表”附近的语法错误 SQL状态:42601 字符:67

1个回答

43

我不确定,但也许您正在使用不支持RETURNS TABLE语法的旧版本pg。下一个问题是您示例中PL/pgSQL语言的语法错误 - 请查看手册以获取语法 - 每个函数都必须包含带有BEGIN ... END的块。可以通过RETURN QUERY语句返回记录。请参阅此教程

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接