在PostgreSQL中使用refcursor返回多个记录集

时间:2018-07-02 15:10:03

标签: postgresql

"LINE":

以上是我的功能,我想执行上述功能的所有记录集。

1 个答案:

答案 0 :(得分:1)

所有光标都用

in_df  <- df[sample, ]
out_df <- df[-sample, ]

然后,您使用SELECT * FROM asyncmultiplerecs(); 从游标中获取结果。

您忘记为游标分配名称,因此它们将被取消命名。

这是一个完整的示例,该如何完成:

FETCH

现在您必须在事务中调用该函数,因为游标将在提交时关闭:

CREATE FUNCTION asyncmultiplerecs() RETURNS SETOF refcursor
   LANGUAGE plpgsql AS 
$$DECLARE
   ref1 refcursor;
BEGIN
   ref1 := 'c1';
   OPEN ref1 FOR VALUES (1), (2);
   RETURN NEXT ref1;

   ref1 := 'c2';
   OPEN ref1 FOR VALUES (3), (4);
   RETURN NEXT ref1;
END;$$;