sp_describe_cursor_tables (Transact-SQL)
Aplica-se: SQL Server
Informa os objetos ou tabelas base referenciadas por um cursor de servidor.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_describe_cursor_tables
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
Argumentos
@cursor_return [ = ] cursor_return SAÍDA
O nome de uma variável de cursor declarada para receber a saída do cursor. @cursor_return é um cursor OUTPUT, sem padrão, e não deve ser associado a nenhum cursor no momento sp_describe_cursor_tables
em que é chamado. O cursor retornado é um cursor rolável, dinâmico, somente leitura.
@cursor_source [ = ] { N'local' | N'global' | N'cursor_source' }
Especifica se o cursor que está sendo relatado foi especificado usando o nome de um cursor local, de um cursor global ou de uma variável de cursor. @cursor_source é nvarchar(30), sem padrão.
@cursor_identity [ = ] N'cursor_identity'
Quando @cursor_source é , @cursor_identity é o nome de um cursor criado por uma DECLARE CURSOR
instrução que tem a LOCAL
palavra-chave ou que o padrão é LOCAL
. local
Quando @cursor_source é , @cursor_identity é o nome de um cursor criado por uma DECLARE CURSOR
instrução que tem a GLOBAL
palavra-chave ou que o padrão é GLOBAL
. global
@cursor_identity também pode ser o nome de um cursor de servidor de API aberto por um aplicativo ODBC que, em seguida, nomeou o cursor chamando SQLSetCursorName
.
Quando @cursor_source é variable
, @cursor_identity é o nome de uma variável de cursor associada a um cursor aberto.
@cursor_identity é nvarchar(128), sem padrão.
Valores do código de retorno
Nenhum.
Cursores retornados
sp_describe_cursor_tables
encapsula seu relatório como um parâmetro de saída de cursor Transact-SQL. Isso permite que lotes, procedimentos armazenados e gatilhos do Transact-SQL funcionem com a saída uma linha por vez. Isso também significa que o procedimento não pode ser chamado diretamente das funções da API. O parâmetro de saída do cursor deve ser associado a uma variável de programa, mas as APIs não dão suporte a parâmetros ou variáveis de cursor de associação.
A tabela a seguir mostra o formato do cursor retornado por sp_describe_cursor_tables
.
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
table_owner |
sysname | ID de usuário do proprietário de tabela. |
table_name |
sysname | Nome do objeto ou tabela base. No SQL Server, os cursores de servidor sempre retornam o objeto especificado pelo usuário, não as tabelas base. |
optimizer_hint |
smallint | Bitmap composto por uma ou mais das seguintes opções: 1 = Bloqueio em nível de linha ( ROWLOCK )4 = Bloqueio no nível da página ( PAGELOCK )8 = Bloqueio de tabela ( TABLOCK )16 = Bloqueio de mesa exclusivo ( TABLOCKX )32 = Bloqueio de atualização ( UPDLOCK )64 = Sem bloqueio ( NOLOCK )128 = Opção de primeira fila rápida ( FASTFIRST )4096 = Semântica repetível de leitura quando usada com DECLARE CURSOR (HOLDLOCK )Quando são fornecidas diversas opções, o sistema usa a mais restritiva. No entanto, sp_describe_cursor_tables mostra os sinalizadores especificados na consulta. |
lock_type |
smallint | Tipo de scroll lock solicitado, explícita ou implicitamente, para cada tabela base subjacente a este cursor. O valor pode ser uma das seguintes opções: 0 = Nenhum 1 = Compartilhado 3 = Atualização |
server_name |
sysname, anulável | Nome do servidor vinculado em que reside a tabela. NULL quando OPENQUERY ou OPENROWSET são usados. |
objectid |
int | ID do objeto da tabela. 0 quando OPENQUERY ou OPENROWSET são usados. |
dbid |
int | ID do banco de dados no qual a tabela reside. 0 quando OPENQUERY ou OPENROWSET são usados. |
dbname |
sysname, anulável | Nome do banco de dados em que a tabela reside. NULL quando OPENQUERY ou OPENROWSET são usados. |
Comentários
sp_describe_cursor_tables
Descreve as tabelas base referenciadas por um cursor de servidor. Para obter uma descrição dos atributos do conjunto de resultados retornado pelo cursor, use sp_describe_cursor_columns
. Para obter uma descrição das características globais do cursor, como sua capacidade de rolagem e atualização, use sp_describe_cursor
. Para obter um relatório dos cursores do servidor Transact-SQL visíveis na conexão, use sp_cursor_list
o .
Permissões
Requer associação à função pública .
Exemplos
O exemplo a seguir abre um cursor global e usa sp_describe_cursor_tables
para relatar as tabelas referenciadas pelo cursor.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
GO
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_tables.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_tables into the cursor variable.
EXEC master.dbo.sp_describe_cursor_tables
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_tables output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_describe_cursor_tables.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO