有没有办法在SQL Server中获取打开/分配的游标列表?

Zug*_*alt 5 sql sql-server sql-server-2000 cursor

我有一个存储过程,可以创建并打开一些游标.它会在最后关闭它们,但是如果它出现错误,那些游标就会被打开!然后,当尝试创建游标时后续运行失败,因为名称已存在的游标已存在.

有没有办法可以查询哪些游标存在以及它们是否打开所以我可以关闭它们并取消分配它们?我觉得这比盲目地试图关闭并吞下错误更好.

Zug*_*alt 3

这似乎对我有用:

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)