sp_describe_cursor_tables (Transact-SQL)
Status do tópico: algumas informações neste tópico são de pré-lançamento e estão sujeitas a mudanças em versões futuras. As informações de pré-lançamento descrevem novos recursos ou alterações em recursos existentes no Microsoft SQL Server 2014.
Informa os objetos ou tabelas base referenciadas por um cursor de servidor.
Aplica-se a: SQL Server (SQL Server 2008 à versão atual). |
Convenções da sintaxe Transact-SQL
Sintaxe
sp_describe_cursor_tables
[ @cursor_return = ] output_cursor_variable OUTPUT
{ [ , [ @cursor_source = ] N'local'
, [ @cursor_identity = ] N'local_cursor_name' ]
| [ , [ @cursor_source = ] N'global'
, [ @cursor_identity = ] N'global_cursor_name' ]
| [ , [ @cursor_source = ] N'variable'
, [ @cursor_identity = ] N'input_cursor_variable' ]
}
[;]
Argumentos
[ @cursor\_return= ] output_cursor_variableOUTPUT
É o nome de uma variável de cursor declarada para recebimento da saída do cursor. output_cursor_variable é cursor, sem padrão, e não é associado a nenhum cursor quando sp_describe_cursor_tables é chamado. O cursor retornado é um cursor rolável, dinâmico, somente leitura.[ @cursor\_source= ] { N'local' | N'global' | N'variable' }
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. O parâmetro é nvarchar(30).[ @cursor\_identity= ] N'local_cursor_name'
É o nome de um cursor criado por uma instrução DECLARE CURSOR que tem a palavra-chave LOCAL, ou que adotou o padrão LOCAL. local_cursor_name é nvarchar(128).[ @cursor\_identity= ] N'global_cursor_name'
É o nome de um cursor criado por uma instrução DECLARE CURSOR que tem a palavra-chave GLOBAL, ou que adotou GLOBAL como padrão. global_cursor_name também podem ser o nome de um cursor de servidor de API aberto por um aplicativo de ODBC, que então nomeou o cursor chamando SQLSetCursorName.global_cursor_name é nvarchar(128).[ @cursor\_identity= ] N'input_cursor_variable'
É o nome de uma variável de cursor associada a um cursor aberto. input_cursor_variable é nvarchar(128).
Valores de código de retorno
Nenhum
Cursores retornados
sp_describe_cursor_tables encapsula seu relatório como um parâmetro de saída Transact-SQL cursor. Isso permite que lotes Transact-SQL, procedimentos armazenados e gatilhos trabalhem 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. O parâmetro de saída cursor deve ser associado a uma variável de programa, mas as APIs não oferecem suporte para associar parâmetros ou variáveis cursor.
A tabela a seguir mostra o formato do cursor que é 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, cursores de servidor sempre retornam o objeto especificado pelo usuário, não as tabelas base. |
Optimizer_hints |
smallint |
Bitmap constituído de um ou mais dos seguinte itens: 1 = Bloqueio de nível de linha (ROWLOCK) 4 = Bloqueio em nível de página (PAGELOCK) 8 = Bloqueio de tabela (TABLOCK) 16 = Bloqueio de tabela exclusivo (TABLOCKX) 32 = Update lock (UPDLOCK) 64 = Sem bloqueio (NOLOCK) 128 = Opção primeira-linha rápida (FASTFIRST) 4096 = Semântica de repetição de leitura, quando usado 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 que são 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 um dos seguintes: 0 = Nenhum 1 = Compartilhado 3 = Atualização |
server_name |
sysname, nullable |
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 em que a tabela reside. 0 quando OPENQUERY ou OPENROWSET são usados. |
dbname |
sysname, nullable |
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 habilidade para rolagem e atualização, use sp_describe_cursor. Para obter um relatório dos cursores de servidor Transact-SQL que estão visíveis na conexão, use sp_cursor_list.
Permissões
Requer associação à função public.
Exemplos
O exemplo a seguir abre um cursor global e usa sp_describe_cursor_tables para informar as tabelas referenciadas pelo cursor.
USE AdventureWorks2012;
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
Consulte também
Referência
sp_describe_cursor (Transact-SQL)
sp_describe_cursor_columns (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)