CURSOR_STATUS (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Para determinado parâmetro, CURSOR_STATUS mostra se uma declaração de cursor retornou ou não um cursor e conjunto de resultados.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

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

'cursor_name'
É o nome do cursor. Um nome de cursor deve estar em conformidade com as regras do identificador do banco de dados.

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

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

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

Tipos de retorno

smallint

Valor retornado Cursor name Variável de cursor
1 O conjunto de resultados do cursor tem, ao menos, uma linha.

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. Tem uma destas possibilidades:

O procedimento chamado anteriormente não atribuiu um cursor a essa variável OUTPUT.

O procedimento atribuído previamente atribuiu um cursor a essa variável OUTPUT, mas o cursor estava em estado de fechamento na conclusão do procedimento. Portanto, o cursor é desalocado, e não é retornado ao procedimento de chamada.

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

Este exemplo usa a função CURSOR_STATUS para mostrar o status de um cursor, após sua declaração, depois que ele é aberto e depois que é 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  
  

Veja a seguir o conjunto de resultados.

After declare
---------------
-1  
  
After Open
----------
1  
  
After Close
-----------
-1

Confira também

funções de cursor (Transact-SQL)
Tipos de dados (Transact-SQL)