sys.sp_cursor_list (Transact-SQL)

Aplica-se a: SQL Server

Reporta os atributos dos cursores do servidor atualmente abertos para a ligação.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

Arguments

[ @cursor_return = ] cursor_return SAÍDA

O nome de uma variável cursor declarada. @cursor_return é um OUTPUT parâmetro do tipo CURSOR. O cursor é um cursor rolável, dinâmico e apenas de leitura.

[ @cursor_scope = ] cursor_scope

Especifica o nível de cursores a reportar. @cursor_scope é int, sem padrão, e pode ser um destes valores.

Value Description
1 Reporte todos os cursores locais.
2 Reporte todos os cursores globais.
3 Reporte os cursores locais e globais.

Valores de código de retorno

Nenhum.

Os cursores regressaram

sp_cursor_list devolve o seu relatório como um parâmetro de saída Transact-SQL cursor, não como um conjunto de resultados. Isto permite que Transact-SQL lotes, procedimentos armazenados e triggers trabalhem com a saída uma linha de cada vez. Isto também significa que o procedimento não pode ser chamado diretamente a partir das funções da API da base de dados. O parâmetro de saída do cursor deve estar associado a uma variável do programa, mas as APIs da base de dados não suportam ligar parâmetros ou variáveis do cursor.

Este é o formato do cursor devolvido por sp_cursor_list. O formato do cursor é o mesmo do formato devolvido por sp_describe_cursor.

Nome da coluna Tipo de dados Description
reference_name sysname O nome usado para se referir ao cursor. Se a referência ao cursor fosse através do nome indicado numa DECLARE CURSOR instrução, o nome da referência é o mesmo que o nome do cursor. Se a referência ao cursor foi através de uma variável, o nome da referência é o nome da variável do cursor.
cursor_name sysname O nome do cursor de uma DECLARE CURSOR declaração. No SQL Server, se o cursor foi criado ao definir uma variável cursor para um cursor, cursor_name devolve o nome da variável cursor. Em versões anteriores, esta coluna de saída devolve um nome gerado pelo sistema.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint Os mesmos valores reportados pela CURSOR_STATUS função do sistema:

1 = O cursor referenciado pelo nome ou variável do cursor está aberto. Se o cursor for insensível, estático ou com teclado, é pelo menos uma linha. Se o cursor for dinâmico, o conjunto de resultados tem zero ou mais linhas.

0 = O cursor referenciado pelo nome ou variável do cursor está aberto mas não tem linhas. Os cursores dinâmicos nunca retornam este valor.

-1 = O cursor referenciado pelo nome ou variável do cursor está fechado.

-2 = Aplica-se apenas a variáveis de cursor. Não há cursor atribuído à variável. Possivelmente, um OUTPUT parâmetro atribuía um cursor à variável, mas o procedimento armazenado fechava o cursor antes de regressar.

-3 = Um cursor ou variável cursor com o nome especificado não existe, ou a variável cursor não tem um cursor atribuído.
model smallint 1 = Insensível (ou estático)
2 = Conjunto de teclas
3 = Dinâmico
4 = Avanço Rápido
concurrency smallint 1 = Apenas leitura
2 = Fechaduras de pergaminho
3 = Otimista
scrollable smallint 0 = Apenas para a frente
1 = Rolável
open_status smallint 0 = Fechado
1 = Aberto
cursor_rows int O número de filas qualificadas no conjunto de resultados. Para mais informações, consulte @@CURSOR_ROWS.
fetch_status smallint O estado do último fetch neste cursor. Para mais informações, consulte @@FETCH_STATUS:

0 = Buscar bem-sucedido.
-1 = Busca falhou ou está fora dos limites do cursor.
-2 = A linha solicitada está em falta.
-9 = Não houve nenhuma busca no cursor.
column_count smallint O número de colunas no conjunto de resultados do cursor.
row_count smallint O número de linhas afetadas pela última operação no cursor. Para mais informações, veja @@ROWCOUNT.
last_operation smallint A última operação realizada no cursor:

0 = Não foram realizadas operações no cursor.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int Um valor único que identifica o cursor dentro do âmbito do servidor.

Remarks

sp_cursor_list Produz uma lista dos cursores de servidor atuais abertos pela ligação e descreve os atributos globais de cada cursor, como a capacidade de scrollabilidade e atualização do cursor. Os cursores listados por sp_cursor_list incluem:

  • Transact-SQL cursores do servidor.

  • Cursores de servidor API abertos por uma aplicação ODBC que depois é chamada SQLSetCursorName para nomear o cursor.

Use sp_describe_cursor_columns para uma descrição dos atributos do conjunto de resultados devolvidos pelo cursor. Use sp_describe_cursor_tables para um relatório das tabelas base referenciadas pelo cursor. sp_describe_cursor reporta a mesma informação que sp_cursor_list, mas apenas para um cursor especificado.

Permissions

As permissões de execução passam por defeito ao papel público .

Examples

O exemplo seguinte abre um cursor global e é usado sp_cursor_list para reportar os atributos do cursor.

USE AdventureWorks2022;
GO

-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
    FOR SELECT LastName
        FROM Person.Person
        WHERE LastName LIKE 'S%';

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report AS CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXECUTE master.dbo.sp_cursor_list
    @cursor_return = @Report OUTPUT,
    @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT FROM @Report;

WHILE (@@FETCH_STATUS <> -1)
BEGIN
    FETCH NEXT FROM @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;

DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;

DEALLOCATE abc;
GO