sp_cursor_list (Transact-SQL)
Informa os atributos de cursores de servidor atualmente abertos para a conexão.
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 de cursores a ser informado. cursor_scope é int, sem padrão, e pode ser 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 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 do cursor deve ser associado a uma variável de programa, mas 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. 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. |
modelo |
smallint |
1 = Insensível (ou estático) 2 = Controlado por conjunto de chaves 3 = Dinâmico 4 = De avanço rápido |
simultaneidade |
smallint |
1 = Apenas 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:
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 uma descrição dos atributos do conjunto de resultados retornado pelo cursor. Use sp_describe_cursor_tables para um relatório das tabelas de base referenciadas pelo cursor. sp_describe_cursor reporta as mesmas informações que sp_cursor_list, mas apenas para um cursor específico.
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 AdventureWorks2008R2;
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