gpt4 book ai didi

oracle - Oracle中游标的生命周期

转载 作者:行者123 更新时间:2023-12-04 15:04:48 31 4
gpt4 key购买 nike

如果我打开一个游标忘记关闭它,该游标在 Oracle 中会存在多长时间?

是否有一些设置来配置光标的生命周期?

最佳答案

以及 DCookie 的回答:

游标生存期的一般模式是

OPEN 
BIND
EXECUTE
FETCH...FETCH...FETCH
BIND
EXECUTE
FETCH...FETCH...FETCH
...
CLOSE

也就是说,可以通过将新变量绑定(bind)到游标并重新执行它来重新使用游标。

PL/SQL 还将维护一个 cache of cursors ,在 session 级别,以避免重新打开您最近关闭的游标的开销。因此,您以编程方式关闭的游标可能仍处于打开状态。 Oracle 将在适当的时候在幕后关闭它们。

如果游标超出范围,则可以将其关闭。也就是说,如果一个调用或过程是这样的:
DECLARE
CURSOR c_1 IS SELECT ....;
BEGIN
OPEN c_1;
FETCH c_1 INTO...;
END;

然后一旦它完成执行, c_1 就会超出范围(并且不能再次物理调用)并且可以关闭。这对于异常处理特别有用,因为有可能引发异常,跳出过程并绕过所有'CLOSE c_1;'代码。通过关闭超出范围的游标,您不必担心添加异常处理代码来执行此操作。

如果您的游标具有 session 范围(例如,在 PL/SQL 包规范或主体的全局级别中定义或通过引用游标返回给客户端)它永远不会以这种方式超出范围,因此永远不会自动关闭,直到 session 断开连接或通过 DBMS_SESSION.MODIFY_PACKAGE_STATE(DBMS_SESSION.FREE_ALL_RESOURCES);

关于oracle - Oracle中游标的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2991515/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com