【问题标题】:closing a ref cursor from coldfusion从coldfusion关闭参考游标
【发布时间】:2012-03-13 05:56:03
【问题描述】:

我正在 Oracle 中编写存储过程和函数,它们将引用游标返回给 ColdFusion,一切正常。但是我读到的所有内容都表明我需要在完成后显式关闭游标或引用游标,否则我以后可能会用完句柄。

但如果我在函数/存储过程的末尾关闭光标,则数据不会返回到 ColdFusion。

那么,完成后如何关闭引用光标呢?

【问题讨论】:

    标签: oracle stored-procedures coldfusion plsql cursor


    【解决方案1】:

    每当数据库连接关闭时,游标也将关闭。在 CF 管理员中,您对数据库连接的数量有限制。如果您对传递给 Oracle 的每个值都使用 cfqueryparam,您将允许对同一查询重复使用同一连接(除非已达到超时)。您必须确保 Oracle 中的游标池限制和 CF admin 中的连接限制一致。听起来这个应用程序从来没有出现过问题,所以可能就是这样。

    【讨论】:

    • 太棒了,谢谢。这就是它的工作方式,但我找不到任何支持任何一方的东西。
    【解决方案2】:

    您的 ColdFusion 应用程序将负责关闭返回给它的光标。

    我不是 ColdFusion 专家,所以我不能完全确定您需要的语法。但是与数据库交互的客户端语言总是有某种对象或结构来表示您从中获取的结果集。当您完成获取数据后,将会有某种close 方法关闭结果集。这也将关闭数据库中的REF CURSOR。确保您的 ColdFusion 应用程序始终调用 close 方法,即使在您获取数据时出现异常 - 游标泄漏的最常见原因是客户端应用程序没有在异常处理程序中关闭游标。

    【讨论】:

    • 就是这样 - cfstoredproccfinvoke(分别是您调用存储过程或函数的方式)都没有任何类型的 close 方法或操作可以与它们一起调用。我会注意到,我刚刚继承的应用程序有数百个返回引用游标的函数,正如我被告知的那样,他们从未遇到过泄漏问题 - 但基于一切,这对我来说没有意义我读过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2010-10-26
    相关资源
    最近更新 更多