【发布时间】:2018-10-22 13:32:54
【问题描述】:
使用 PostgreSQL,我使用以下结构存储函数:
create or replace function myfunc() returns refcursor as $$
declare rc refcursor := 'mycursor';
-- ...
begin;
-- ...
open rc for select ...;
return rc;
end; $$ language plpgsql;
这将返回一个我在强制事务中使用的游标。我是这样使用的:
begin;
select myfunc();
fetch all in mycursor;
close mycursor;
commit;
但在大多数示例和教程中,语句 close mycursor; 被简单地省略了。
我知道在函数内部使用它时需要关闭它,但是当它返回时,commit; 可能会自动关闭任何打开的游标?
那么,关闭光标真的有必要吗?
由于光标不在范围内,因此不确定如何检查它在 commit; 之后是否仍然打开。
【问题讨论】:
标签: postgresql plpgsql database-cursor