postgresql – 如何从PL / pgSQL函数返回多行?

前端之家收集整理的这篇文章主要介绍了postgresql – 如何从PL / pgSQL函数返回多行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我花了很多时间试图解决它,但我无法解决它.所以,我需要你的帮助.

我正在尝试编写一个返回多行的PL / pgsql函数.我写的函数如下所示.但它没有用.

CREATE OR REPLACE FUNCTION get_object_fields()
RETURNS SETOF RECORD
AS 
$$
DECLARE result_record keyMetrics;
BEGIN
    return QUERY SELECT department_id into result_record.visits 
    from fact_department_daily 
    where report_date='2013-06-07';
    --return result_record;
END

$$LANGUAGE plpgsql; 

SELECT * FROM get_object_fields;

它返回此错误

ERROR: RETURN cannot have a parameter in function returning set;
use RETURN NEXT at or near “QUERY”

解决方法

我看到更多的错误

首先,SET RETURNING FUNCTIONS调用具有以下语法

SELECT * FROM get_object_fields()

second – RETURN QUERY将查询结果直接转发给输出.你不能将这个结果存储到变量中 – 现在在Postgresql中是不可能的.

BEGIN
  RETURN QUERY SELECT ....; -- result is forwarded to output directly
  RETURN;   -- there will not be any next result,finish execution
END;

第三 – 这些简单的函数最好用sql语言实现

CREATE OR REPLACE FUNCTION get_object_fields()
RETURNS SETOF RECORD AS $$
SELECT department_id WHERE ...
$$LANGUAGE sql STABLE;

猜你在找的Postgre SQL相关文章