我有一个触发器,用于在对表进行更改时执行一些审计任务。在这个触发器中有一个 WHILE 循环,在循环中有一个游标,在循环的下一次迭代之前声明、使用、关闭然后释放。
当我调用一个存储过程来更改表并反过来导致触发器运行时,我从 Management Studio 中执行此操作,一切都按预期进行。
但是,当从我的 Java Web 应用程序中调用此存储过程时,我收到错误消息:“名称为 ... 的游标已存在”。
为什么这个存储过程在我手动执行时可以工作,而在从 Web 应用程序运行时却不能工作?
最佳答案
听起来您可能正在使用 GLOBAL 游标,这可能会导致此类问题。
如果必须使用游标:
如果可以,请在所有代码中使用 LOCAL 游标。 例如使用“LOCAL”关键字声明游标,如下所示:
DECLARE yourcursor CURSOR LOCAL ...
关于java - 名称为 ... 的游标已存在 - SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735719/