Compartilhar via


sp_cursor_list (Transact-SQL)

Informa os atributos de cursores de servidor atualmente abertos para a conexão.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT 
     , [ @cursor_scope = ] cursor_scope
[;]

Argumentos

  • [ @cursor\_return= ] cursor_variable_nameOUTPUT
    É o nome de uma variável de cursor declarada. cursor_variable_name é cursor, sem padrão. O cursor é um cursor rolável, dinâmico, somente leitura.

  • [ @cursor\_scope= ] cursor_scope
    Especifica o nível dos cursores a serem relatados. cursor_scope é int, sem padrão e pode ter um destes valores.

    Valor

    Descrição

    1

    Informar todos os cursores locais.

    2

    Informar todos os cursores globais.

    3

    Informar cursores locais e globais.

Valores de código de retorno

Nenhum

Cursores retornados

sp_cursor_list retorna seu relatório como um parâmetro de saída de cursor do Transact-SQL, não como um conjunto de resultados. Isso permite que lotes, procedimentos armazenados e gatilhos Transact-SQL funcionem com a saída, uma linha de cada vez. Isso também significa que o procedimento não pode ser chamado diretamente de funções API do banco de dados. O parâmetro de saída de cursor deve ser associado a uma variável de programa, mas as APIs do banco de dados não oferecem suporte a associações de parâmetros ou variáveis de cursor.

Esse é o formato do cursor retornado por sp_cursor_list. O formato do cursor é o mesmo formato retornado por sp_describe_cursor.

Nome da coluna

Tipo de dados

Descrição

reference_name

sysname

O nome usado para se referir ao cursor. Se a referência ao cursor for feita através do nome dado em uma instrução DECLARE CURSOR, o nome de referência será igual ao nome do cursor. Se a referência ao cursor foi feita por uma variável, o nome da referência será o nome da variável do cursor.

cursor_name

sysname

O nome do cursor de uma instrução DECLARE CURSOR. No SQL Server, se o cursor tiver sido criado pela definição de uma variável de cursor para um cursor, cursor_name retornará o nome da variável do cursor. Em versões anteriores, essa coluna de saída retorna um nome gerado pelo sistema.

cursor_scope

smallint

1 = LOCAL

2 = GLOBAL

status

smallint

Os mesmos valores conforme informado pela função do sistema CURSOR_STATUS:

1 = O cursor referenciado pelo nome do cursor ou pela variável de cursor está aberto. Se o cursor for insensível, estático ou controlado por um conjunto de chaves terá ao menos uma linha. Se o cursor for dinâmico, o conjunto de resultados terá zero ou mais linhas.

0 = O cursor referenciado pelo nome ou pela variável do cursor está aberto, mas não contém linhas. Cursores dinâmicos nunca retornam esse valor.

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

-2 = Aplicável somente a variáveis de cursor. Não há nenhum cursor atribuído à variável. Possivelmente, um parâmetro OUTPUT atribuiu um cursor à variável, mas o procedimento armazenado fechou o cursor antes de retornar.

-3 = Um cursor ou uma variável de cursor com o nome especificado não existe, ou nenhum cursor foi alocado à variável de cursor.

model

smallint

1 = Insensível (ou estático)

2 = Controlado por conjunto de chaves

3 = Dinâmico

4 = De avanço rápido

concurrency

smallint

1 = Apenas leitura

2 = Bloqueios de rolagem

3 = Otimista

scrollable

smallint

0 = Somente avanço

1 = Rolável

open_status

smallint

0 = Fechado

1 = Abrir

cursor_rows

int

O número de linhas de qualificação no conjunto de resultados. Para obter mais informações, consulte @@CURSOR_ROWS.

fetch_status

smallint

O status da última busca nesse cursor. Para obter mais informações, consulte @@FETCH_STATUS:

0 = Busca bem-sucedida.

-1 = A busca falhou ou está além dos limites do cursor.

-2 = A linha solicitada está ausente.

-9 = Não houve 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 obter mais informações, consulte @@ROWCOUNT.

last_operation

smallint

A última operação executada no cursor:

0 = Nenhuma operação foi executada no cursor.

1 = OPEN

2 = FETCH

3 = INSERT

4 = UPDATE

5 = DELETE

6 = CLOSE

7 = DEALLOCATE

cursor_handle

int

Um valor exclusivo que identifica o cursor dentro do escopo do servidor.

Comentários

sp_cursor_list gera uma lista dos cursores de servidor atuais aberta pela conexão e descreve os atributos globais de cada cursor, como a capacidade de rolagem e atualização do cursor. Os cursores listados por sp_cursor_list incluem:

  • Transact-SQLCursores de servidor

  • Cursores de servidor API abertos por um aplicativo ODBC que é chamado SQLSetCursorName como o nome do cursor.

Use sp_describe_cursor_columns para obter uma descrição dos atributos do conjunto de resultados retornado pelo cursor. Use sp_describe_cursor_tables para obter um relatório das tabelas base referenciadas pelo cursor. sp_describe_cursor relata as mesmas informações como sp_cursor_list, mas apenas para um cursor especificado.

Permissões

Execute permissões padrão para a função public.

Exemplos

O exemplo a seguir abre um cursor global e usa sp_cursor_list para informar os atributos do cursor.

USE AdventureWorks2012;
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 CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXEC 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

Consulte também

Referência

Procedimentos armazenados do sistema (Transact-SQL)