Partilhar via


CURSOR_STATUS (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

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

Transact-SQL convenções de sintaxe

Sintaxe

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

Argumentos

'local'

Especifica uma constante que indica que a origem do cursor é um cursor local.

'Global'

Especifica uma constante que indica que a origem do cursor é um cursor global.

'variável'

Especifica uma constante que indica que a origem do cursor é uma variável local.

  • 'cursor_variable'

    O nome da variável do cursor. Uma variável de cursor deve ser definida usando o tipo de dados do cursor .

Tipos de devolução

Smallint

Valor de retorno Nome do cursor Variável do cursor
1 O conjunto de resultados do cursor tem pelo menos uma linha.

Para cursores insensíveis e de conjunto de teclas, o conjunto de resultados tem pelo 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 insensíveis e de conjunto de teclas, o conjunto de resultados tem pelo 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. 1 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 é fechado.
-2 Não aplicável. Tem uma destas possibilidades:

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

O procedimento atribuído anteriormente atribuiu um cursor a essa OUTPUT variável, mas o cursor estava em um estado fechado quando o procedimento foi concluído. Portanto, o cursor é deslocalizado 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 existir, nenhum cursor ainda está alocado a ela.

1 Os cursores dinâmicos nunca devolvem este resultado.

Exemplos

Este exemplo usa a CURSOR_STATUS função para mostrar o status de um cursor, após sua declaração, depois que ele abre e depois que ele fecha.

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
-- and 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.

After declare
---------------
-1

After Open
----------
1

After Close
-----------
-1