如何获取 PL/pgSQL 个游标?
How to fetch PL/pgSQL cursors?
我正在尝试使用游标获取动态数据:
CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$
BEGIN
OPEN FOR SELECT * FROM users;
RETURN NEXT ;
END;
$$ LANGUAGE plpgsql;
当我尝试获取数据时,我不断收到此错误:“a”不是已知变量??
do $$ begin
SELECT * FROM myfunc('a', 'b');
FETCH ALL FROM a;
COMMIT;
end;
$$
如果您只想从游标中获取数据,则不需要 PL/pgSQL 代码。您只需要一个事务,因为游标的寿命不会比事务长。不要混淆来自 PL/pgSQL 的 BEGIN
和 SQL 中的 BEGIN
,后者开始一个代码块:
BEGIN;
SELECT * FROM myfunc('a', 'b');
FETCH ALL FROM a;
COMMIT;
我正在尝试使用游标获取动态数据:
CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$
BEGIN
OPEN FOR SELECT * FROM users;
RETURN NEXT ;
END;
$$ LANGUAGE plpgsql;
当我尝试获取数据时,我不断收到此错误:“a”不是已知变量??
do $$ begin
SELECT * FROM myfunc('a', 'b');
FETCH ALL FROM a;
COMMIT;
end;
$$
如果您只想从游标中获取数据,则不需要 PL/pgSQL 代码。您只需要一个事务,因为游标的寿命不会比事务长。不要混淆来自 PL/pgSQL 的 BEGIN
和 SQL 中的 BEGIN
,后者开始一个代码块:
BEGIN;
SELECT * FROM myfunc('a', 'b');
FETCH ALL FROM a;
COMMIT;