我正在Oracle中编写存储过程和函数,它们将ref游标返回给ColdFusion,一切正常。但是我读过的所有内容都表明,当我完成游标时,我需要显式关闭游标或引用游标,否则我可能会在以后用尽句柄。
但如果我在函数/存储过程结束时关闭光标,则数据不会返回到ColdFusion。
那么一旦我完成它,如何关闭引用光标?
答案 0 :(得分:2)
每当关闭数据库连接时,光标也将被关闭。在CF管理员中,您对数据库连接的数量有限制。如果对传递给Oracle的每个值都使用cfqueryparam,则允许对同一查询重用相同的连接(除非已达到超时)。您必须确保Oracle中的游标池限制和CF管理员中的连接限制是一致的。听起来这个应用程序从来没有出现问题,所以情况可能就是这样。
答案 1 :(得分:0)
您的ColdFusion应用程序将负责关闭返回给它的游标。
我不是ColdFusion专家,所以我不完全确定你需要的语法。但是,与数据库交互的客户端语言总是具有某种对象或结构来表示您从中获取的结果集。完成提取数据后,会有某种close
方法关闭结果集。这也将关闭数据库中的REF CURSOR
。确保您的ColdFusion应用程序始终调用close方法,即使在获取数据时存在异常 - 游标泄漏的最常见原因是客户端应用程序不会关闭异常处理程序中的游标。