Postgres 中的游标

Cursors in Postgres

游标是否永久存储在 Postgres 中?我问的原因是我有以下内容:

BEGIN;
DECLARE cpc CURSOR for select * from project.car order by rego, date;
FETCH  1 IN cpc;
CLOSE cpc;
COMMIT;

然后我开始新的交易:

BEGIN;
OPEN cpc;
fetch 1 in cpc;
CLOSE cpc;
COMMIT;

但得到错误:"ERROR: cursor "cpc"不存在SQL状态:34000"。

有没有办法让游标在事务之间持久化?

游标是事务的本地游标,在事务提交或回滚时不复存在。

您可以 declare WITH HOLD cursors 在提交后保持不变,尽管它们仅在创建它们的会话中保持可见。