sys.sp_describe_cursor_tables (Transact-SQL)

Aplica-se a: SQL Server

Reporta os objetos ou tabelas base referenciados por um cursor de servidor.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_describe_cursor_tables
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
    , [ @cursor_identity = ] N'cursor_identity'
[ ; ]

Arguments

[ @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 OUTPUTcursor, sem padrão, e não deve estar associado a nenhum cursor no momento sp_describe_cursor_tables em que é chamado. O cursor devolvido é um cursor rolável, dinâmico e apenas de leitura.

[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }

Especifica se o cursor reportado é especificado usando o nome de um cursor local, um cursor global ou uma variável de cursor. @cursor_source é nvarchar(30), sem padrão.

[ @cursor_identity = ] N'cursor_identity'

Quando @cursor_source é local, @cursor_identity é o nome de um cursor criado por uma DECLARE CURSOR afirmação que tem a LOCAL palavra-chave, ou que por defeito é LOCAL.

Quando @cursor_source é global, @cursor_identity é o nome de um cursor criado por uma DECLARE CURSOR afirmação que tem a GLOBAL palavra-chave, ou que por defeito é GLOBAL. @cursor_identity também pode ser o nome de um cursor de servidor API aberto por uma aplicação ODBC que depois nomeou o cursor chamando SQLSetCursorName.

Quando @cursor_source é variable, @cursor_identity é o nome de uma variável cursor associada a um cursor aberto.

@cursor_identity é nvarchar(128), sem padrão.

Valores de código de retorno

Nenhum.

Os cursores regressaram

sp_describe_cursor_tables encapsula o seu relatório como um parâmetro de saída Transact-SQL cursor . Isto permite que Transact-SQL lotes, procedimentos armazenados e triggers trabalhem com a saída uma linha de cada vez. Isto também significa que o procedimento não pode ser chamado diretamente a partir das funções da API. O parâmetro de saída do cursor deve estar associado a uma variável do programa, mas as APIs não suportam parâmetros ou variáveis de cursor de atribuição.

A tabela seguinte mostra o formato do cursor que é devolvido por sp_describe_cursor_tables.

Nome da coluna Tipo de dados Description
table_owner sysname ID de utilizador do dono da mesa.
table_name sysname Nome do objeto ou da tabela base. No SQL Server, os cursores do servidor retornam sempre o objeto especificado pelo utilizador, não as tabelas base.
optimizer_hint smallint Bitmap composto por uma ou mais das seguintes opções:

1 = Bloqueio ao nível das filas (ROWLOCK)
4 = Bloqueio ao nível da página (PAGELOCK)
8 = Fechadura de mesa (TABLOCK)
16 = Bloqueio exclusivo de mesa (TABLOCKX)
32 = Atualizar bloqueio (UPDLOCK)
64 = Sem bloqueio (NOLOCK)
128 = Opção rápida na primeira fila (FASTFIRST)
4096 = Leia semântica repetível quando usada com DECLARE CURSOR (HOLDLOCK)

Quando são fornecidas múltiplas opções, o sistema utiliza as mais restritivas. No entanto, sp_describe_cursor_tables mostra os flags especificados na consulta.
lock_type smallint Tipo scroll-lock solicitado, seja explícita ou implicitamente, para cada tabela base que subjaca a este cursor. O valor pode ser uma das seguintes opções:

0 = Nenhum
1 = Partilhado
3 = Atualização
server_name sysname, nullable Nome do servidor ligado onde a tabela reside. 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 da base de dados onde a tabela se encontra. 0 quando OPENQUERY ou OPENROWSET são usados.
dbname sysname, nullable Nome da base de dados onde a tabela se encontra. NULL quando OPENQUERY ou OPENROWSET são usados.

Remarks

sp_describe_cursor_tables descreve as tabelas base referenciadas por um cursor de servidor. Para uma descrição dos atributos do conjunto de resultados devolvidos pelo cursor, use sp_describe_cursor_columns. Para uma descrição das características globais do cursor, como a sua capacidade de scroll e atualizabilidade, use sp_describe_cursor. Para obter um relatório dos Transact-SQL cursores do servidor visíveis na ligação, use sp_cursor_list.

Permissions

Requer adesão à função pública de .

Examples

O exemplo seguinte abre um cursor global e é usado sp_describe_cursor_tables para reportar 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 AS CURSOR;

-- Execute sp_describe_cursor_tables into the cursor variable.
EXECUTE 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