如何解决函数返回多个 REFCURSOR,但 REFCURSOR 语句在单独的独立事务中执行
执行时的 REFCURSOR 之一也应该是向表中插入数据。另一个 REFCURSOR 将查询插入的数据。
CREATE TABLE A (column_1 INTEGER);
CREATE FUNCTION insert_data()
RETURNS setof refcursor
LANGUAGE plpgsql
VOLATILE
COST 100
AS
$$
DECLARE
first_refcursor refcursor = 'first';
second_refcursor refcursor = 'second';
BEGIN
OPEN first_refcursor FOR
WITH
first_cursor_data AS
(INSERT INTO A (column_1)
VALUES
(0)
RETURNING column_1)
SELECT * FROM first_cursor_data;
RETURN NEXT first_refcursor;
OPEN second_refcursor FOR
SELECT * FROM A WHERE column_1 = 0;
RETURN NEXT second_refcursor;
END;
$$;
BEGIN;
SELECT * FROM insert_data();
FETCH ALL FROM "first"; -- this returns 0 (which is the inserted row)
FETCH ALL FROM "second"; -- this however does not return any rows
END;
在事务中运行的第一个 REFCURSOR 查询与第二个 REFCURSOR 查询不同吗? 任何更好的解释都会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。