sp_cursor_list (Transact-SQL)

Aplica-se a:SQL Server

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

Convenções de sintaxe de 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 ser um desses valores.

Valor Descrição
1 Informar todos os cursores locais.
2 Informar todos os cursores globais.
3 Informar cursores locais e globais.

Valores do código de retorno

Nenhum

Cursores retornados

sp_cursor_list retorna seu relatório como um parâmetro de saída de cursor Transact-SQL, não como um conjunto de resultados. Isso permite que lotes transact-SQL, procedimentos armazenados e gatilhos 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 que o formato retornado por sp_cursor_list.

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. Em SQL Server, se o cursor tiver sido criado definindo uma variável de cursor como um cursor, cursor_name retornará o nome da variável de 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.
modelo smallint 1 = Insensível (ou estático)

2 = Conjunto de chaves

3 = Dinâmico

4 = De avanço rápido
simultaneidade smallint 1 = Somente leitura

2 = Bloqueios de rolagem

3 = Otimista
rolável 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 do cursor de ser rolável e atualizável. Os cursores listados por sp_cursor_list incluem:

  • Cursores de servidor Transact-SQL.

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

Use sp_describe_cursor_columns para 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 que sp_cursor_list, mas apenas para um cursor especificado.

Permissões

Execute permissões padrão para a função pública.

Exemplos

O exemplo a seguir abre um cursor global e usa sp_cursor_list para informar 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 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

Procedimentos armazenados do sistema (Transact-SQL)