我有一个触发器,用于在对表进行更改时执行一些审核任务。在此触发器中,有一个WHILE循环,并且在循环中有一个游标,该游标在循环的下一次迭代之前被声明,使用,关闭然后释放。
当我调用更改表的存储过程并进而导致触发器运行时,并且在Management Studio中执行此操作,所有操作均按预期进行。
但是,当从Java Web应用程序中调用此存储过程时,出现错误:“名称为…的游标已存在”。
为什么有一个原因使该存储过程在我手动执行时可以工作,而从Web应用程序运行时却不能工作?
听起来您可能正在使用GLOBAL游标,这可能会导致诸如此类的问题。
如果必须使用游标:
如果可以,请在所有代码中使用LOCAL游标。例如,使用“ LOCAL”关键字声明光标,如下所示:
DECLARE yourcursor CURSOR LOCAL ...