代码之家  ›  专栏  ›  技术社区  ›  Yeti

是否需要从存储的plpgsql函数关闭返回的refcursor?

  •  0
  • Yeti  · 技术社区  · 6 年前

    使用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; 自动关闭任何打开的光标? 那么,关闭光标真的有必要吗?

    不知道如何检查它在 承诺; 因为光标不再在范围内。

    1 回复  |  直到 6 年前
        1
  •  2
  •   SABER - FICTIONAL CHARACTER    6 年前

    AS mention in the docs

    关闭关闭打开光标下的门户。这可以用于在事务结束之前释放资源,或者释放光标变量以便再次打开。

    你可以用 close cursor_name 对于 releasing resources earlier than end of transaction 如果不关闭光标, end commit 那你的交易就不重要了。

    推荐文章