Zug*_*alt 5 sql sql-server sql-server-2000 cursor
我有一个存储过程,可以创建并打开一些游标.它会在最后关闭它们,但是如果它出现错误,那些游标就会被打开!然后,当尝试创建游标时后续运行失败,因为名称已存在的游标已存在.
有没有办法可以查询哪些游标存在以及它们是否打开所以我可以关闭它们并取消分配它们?我觉得这比盲目地试图关闭并吞下错误更好.
这似乎对我有用:
CREATE PROCEDURE dbo.p_cleanUpCursor @cursorName varchar(255) AS
BEGIN
DECLARE @cursorStatus int
SET @cursorStatus = (SELECT cursor_status('global',@cursorName))
DECLARE @sql varchar(255)
SET @sql = ''
IF @cursorStatus > 0
SET @sql = 'CLOSE '+@cursorName
IF @cursorStatus > -3
SET @sql = @sql+' DEALLOCATE '+@cursorName
IF @sql <> ''
exec(@sql)
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15900 次 |
| 最近记录: |