【发布时间】:2012-03-13 05:56:03
【问题描述】:
我正在 Oracle 中编写存储过程和函数,它们将引用游标返回给 ColdFusion,一切正常。但是我读到的所有内容都表明我需要在完成后显式关闭游标或引用游标,否则我以后可能会用完句柄。
但如果我在函数/存储过程的末尾关闭光标,则数据不会返回到 ColdFusion。
那么,完成后如何关闭引用光标呢?
【问题讨论】:
标签: oracle stored-procedures coldfusion plsql cursor
我正在 Oracle 中编写存储过程和函数,它们将引用游标返回给 ColdFusion,一切正常。但是我读到的所有内容都表明我需要在完成后显式关闭游标或引用游标,否则我以后可能会用完句柄。
但如果我在函数/存储过程的末尾关闭光标,则数据不会返回到 ColdFusion。
那么,完成后如何关闭引用光标呢?
【问题讨论】:
标签: oracle stored-procedures coldfusion plsql cursor
每当数据库连接关闭时,游标也将关闭。在 CF 管理员中,您对数据库连接的数量有限制。如果您对传递给 Oracle 的每个值都使用 cfqueryparam,您将允许对同一查询重复使用同一连接(除非已达到超时)。您必须确保 Oracle 中的游标池限制和 CF admin 中的连接限制一致。听起来这个应用程序从来没有出现过问题,所以可能就是这样。
【讨论】:
您的 ColdFusion 应用程序将负责关闭返回给它的光标。
我不是 ColdFusion 专家,所以我不能完全确定您需要的语法。但是与数据库交互的客户端语言总是有某种对象或结构来表示您从中获取的结果集。当您完成获取数据后,将会有某种close 方法关闭结果集。这也将关闭数据库中的REF CURSOR。确保您的 ColdFusion 应用程序始终调用 close 方法,即使在您获取数据时出现异常 - 游标泄漏的最常见原因是客户端应用程序没有在异常处理程序中关闭游标。
【讨论】: