Partilhar via


CURSOR_STATUS (Transact-SQL)

Uma função escalar que permite o chamador de um procedimento armazenado para determinar se o procedimento retornou um cursor e conjunto de resultados para um determinado parâmetro ou não.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

CURSOR_STATUS 
          (
               { 'local' , 'cursor_name' } 
          | { 'global' , 'cursor_name' } 
          | { 'variable' , 'cursor_variable' } 
          )

Argumentos

  • 'local'
    Especifica uma constante que indica a fonte do cursor é um nome de cursor local.

  • 'cursor_name'
    É o nome do cursor. Um nome de cursor deve obedecer às regras para identificadores.

  • 'global'
    Especifica uma constante que indica que a fonte do cursor é um nome de cursor global.

  • 'variável'
    Especifica uma constante que indica que a fonte do cursor é uma variável local.

  • 'cursor_variable'
    É o nome do cursor variável. Uma variável de cursor deve ser definida usando o tipo de dados cursor.

Tipos de retorno

smallint

Valor de retorno

Cursor name

Variável de cursor

1

O conjunto de resultados do cursor tem, ao menos, uma fila.

Para cursores insensitive e keyset, o conjunto de resultados terá ao menos uma linha.

Para cursores dinâmicos, o conjunto de resultados pode ter zero, uma ou mais linhas.

O cursor alocado a esta variável está aberto.

Para cursores insensitive e keyset, o conjunto de resultados terá ao menos uma linha.

Para cursores dinâmicos, o conjunto de resultados pode ter zero, uma ou mais linhas.

0

O conjunto de resultados do cursor está vazio.*

O cursor alocado a esta variável está aberto, mas o conjunto de resultados está definitivamente vazio.*

-1

O cursor está fechado.

O cursor alocado a esta variável está fechado.

-2

Não aplicável.

Pode ser:

Nenhum cursor foi atribuído a esta variável OUTPUT pelo procedimento chamado anteriormente.

Um cursor foi atribuído a esta variável OUTPUT pelo procedimento chamado previamente, mas ele estava em estado de fechamento na conclusão do procedimento. Então, o cursor é desalocado e não é retornado ao procedimento de chamada.

Não há nenhum cursor atribuído à variável de cursor declarada.

-3

Um cursor com o nome especificado não existe.

Uma variável de cursor com o nome especificado não existe, ou se existe, nenhum cursor foi alocado a ela ainda.

*Cursores dinâmicos nunca retornam esse resultado.

Exemplos

O exemplo a seguir usa a função CURSOR_STATUS para mostrar o status de um cursor antes e depois de ele ser aberto e fechado.

CREATE TABLE #TMP
(
   ii int
)
GO

INSERT INTO #TMP(ii) VALUES(1)
INSERT INTO #TMP(ii) VALUES(2)
INSERT INTO #TMP(ii) VALUES(3)

GO

--Create a cursor.
DECLARE cur CURSOR
FOR SELECT * FROM #TMP

--Display the status of the cursor before and after opening
--closing the cursor.

SELECT CURSOR_STATUS('global','cur') AS 'After declare'
OPEN cur
SELECT CURSOR_STATUS('global','cur') AS 'After Open'
CLOSE cur
SELECT CURSOR_STATUS('global','cur') AS 'After Close'

--Remove the cursor.
DEALLOCATE cur

--Drop the table.
DROP TABLE #TMP

Aqui está o conjunto de resultados.

Depois de Declare

---------------

-1

Depois de Open

----------

1

Depois de Close

-----------

-1