postgresql - plpgsql 函数返回表(..)

标签 postgresql 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

最佳答案

我不确定,但也许您使用的是不支持 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/

相关文章:

postgresql - 错误 : syntax error at or near "RETURN" , PostgreSQL 函数

sql - 返回任意类型的 PostgreSQL 函数

Postgresql 函数循环遍历输入参数并追加到 hstore

postgresql - 如何访问plpgsql复合类型数组组件

function - 没有函数匹配给定的名称和参数类型

postgresql - PostgreSQL 中的字母数字排序

sql - 如何在 PostgreSQL 中计算年份

postgresql - psql : FATAL: could not open file "base/11951/11717": Read-only file system

postgresql - 如何在不创建函数的情况下运行 plpgsql?

postgresql - 如何将 "explain analyze"结果输出到表列?