pun*_*lly 2 sql-server stored-procedures
我们在 PayPal 订单方面遇到了间歇性问题,我一直在深入研究我们的代码。我们在特定存储过程中收到一个异常,显示“等待操作超时”。在存储过程中,我可以看到一个名为的游标item_cursor
被声明并随后打开,但它从未关闭。存储过程直接结束,无需调用close item_cursor
(或DEALLOCATE item_cursor
)。
我是前端开发人员而不是后端开发人员,所以我有点超出我的深度,但这会导致问题吗?
这取决于游标的声明方式:
当地的
指定游标的范围是创建游标的批处理、存储过程或触发器的本地范围。游标名称仅在此范围内有效。...当批处理、存储过程或触发器终止时,游标将隐式释放,除非游标在 OUTPUT 参数中传回。如果它在 OUTPUT 参数中传回,则当引用它的最后一个变量被释放或超出范围时,游标将被释放。
全球的
指定游标的范围对于连接是全局的。可以在连接执行的任何存储过程或批处理中引用游标名称。游标仅在断开连接时隐式释放。
(我的重点)
然后,它继续解释如果两者都没有指定,它如何选择默认值,但是如果您没有更改系统上的任何其他内容,则它将是GLOBAL
默认值,在这种情况下意味着,是的,它将“泄漏” 。如果光标持有任何锁,它将继续持有这些锁,直到连接断开。
归档时间: |
|
查看次数: |
1524 次 |
最近记录: |