sp_describe_cursor_tables (Transact-SQL)

Aplica-se a: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'variable' }
    , [ @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'variável' }

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 é localo nome de um cursor criado por uma DECLARE CURSOR instrução com a palavra-chave ou que tem LOCALcomo LOCAL padrão .

Quando @cursor_source é , @cursor_identity é globalo nome de um cursor criado por uma DECLARE CURSOR instrução com a palavra-chave ou que tem GLOBALcomo GLOBAL padrão . @cursor_identity também pode ser o nome de um cursor do servidor de API aberto por um aplicativo ODBC que, em seguida, nomeou o cursor chamando SQLSetCursorName.

Quando @cursor_source é , @cursor_identity é variableo 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_tablesencapsula seu relatório como um parâmetro de saída do cursor Transact-SQL. Isso permite que lotes, procedimentos armazenados e gatilhos 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 vinculado a uma variável de programa, mas as APIs não oferecem suporte a parâmetros ou variáveis de cursor de ligação.

A tabela a seguir mostra o formato do cursor retornado pelo 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 que é 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 mesa (TABLOCK)
16 = Fechadura de mesa exclusiva (TABLOCKX)
32 = Bloqueio de atualização (UPDLOCK)
64 = Sem bloqueio (NOLOCK)
128 = Opção de primeira linha rápida (FASTFIRST)
4096 = Leitura semântica repetível 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 retornados pelo cursor, use sp_describe_cursor_columns. Para obter uma descrição das características globais do cursor, como sua rolagem e updatability, use sp_describe_cursor. Para obter um relatório dos cursores do servidor Transact-SQL visíveis na conexão, use sp_cursor_list.

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