sp_describe_cursor_tables (Transact-SQL)

Aplica-se a: simSQL Server (todas as versões compatíveis)

Informa os objetos ou tabelas base referenciadas por um cursor de servidor.

Ícone de link do tópico 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_variable saída
É 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 deve ser associado a nenhum cursores no momento 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 pode ser o nome de um cursor do servidor de API aberto por um aplicativo ODBC que, em seguida, chamava 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 do código de retorno

Nenhum

Cursores retornados

sp_describe_cursor_tables encapsula seu relatório como um parâmetro de saída de 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 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 vinculação.

A tabela a seguir exibe 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, 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 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, 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 em que 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 tabelas base referenciadas por um cursor de servidor. Para uma descrição dos atributos do conjunto de resultados retornado pelo cursor, use sp_describe_cursor_columns. Para 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 Transact-SQL cursores do servidor 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

Cursores
CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_describe_cursor_columns (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)