sys.sp_describe_cursor_columns (Transact-SQL)

Aplica-se a: SQL Server

Reporta os atributos das colunas no conjunto de resultados de um cursor de servidor.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_describe_cursor_columns
    [ @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 OUTPUT parâmetro do tipo int, sem padrão, e não deve estar associado a nenhum cursor no momento sp_describe_cursor_columns 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 cursor. @cursor_source é nvarchar(30), sem padrão.

[ @cursor_identity = ] N'cursor_identity'

O nome de um cursor criado por uma DECLARE CURSOR instrução. @cursor_identity é nvarchar(128), sem padrão.

  • Se o cursor tiver a LOCAL palavra-chave, ou estiver por defeito para LOCAL, @cursor_identity é local.

  • Se o cursor tiver a GLOBAL palavra-chave, ou estiver por defeito para GLOBAL, @cursor_identity é global. @cursor_identity também pode ser o nome de um cursor de servidor API aberto por uma aplicação ODBC, e depois nomeado ao chamar SQLSetCursorName.

  • Caso contrário, @cursor_identity é o nome de uma variável cursor associada a um cursor aberto.

Valores de código de retorno

Nenhum.

Os cursores regressaram

sp_describe_cursor_columns 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 da base de dados. O cursor parâmetro de saída deve estar ligado a uma variável do programa, mas as APIs da base de dados não suportam parâmetros ou variáveis de ligação cursor .

A tabela seguinte mostra o formato do cursor devolvido usando sp_describe_cursor_columns.

Nome da coluna Tipo de dados Description
column_name sysname Nome atribuído à coluna do conjunto de resultados. A coluna é NULL se a coluna foi especificada sem uma cláusula acompanhante AS .

Nullable.
ordinal_position int Posição relativa da coluna a partir da coluna mais à esquerda no conjunto de resultados. A primeira coluna está na posição 0.
column_characteristics_flags int Uma máscara de bits que indica a informação armazenada no DBCOLUMNFLAGS OLE DB. Pode ser um ou uma combinação dos seguintes valores:

1 = Favorito
2 = Comprimento fixo
4 = Anulável
8 = Versão por linha
16 = Coluna atualizável (definida para colunas projetadas de um cursor que não FOR UPDATE tem cláusula e, se existir tal coluna, só pode haver uma por cursor).

Quando os valores dos bits são combinados, aplicam-se as características dos valores combinados dos bits. Por exemplo, se o valor do bit for 6, a coluna é uma coluna de comprimento fixo (2), anulável (4).
column_size int Tamanho máximo possível para um valor nesta coluna.
data_type_sql smallint Número que indica o tipo de dado SQL Server da coluna.
column_precision tinyint Precisão máxima da coluna conforme o bPrecision valor em OLE DB.
column_scale tinyint Número de dígitos à direita do ponto decimal para os tipos numéricos ou de dados decimais , conforme o bScale valor em OLE DB.
order_position int Se a coluna participar na ordenação do conjunto de resultados, a posição da coluna na chave de ordem relativa à coluna mais à esquerda.
order_direction varchar(1) A = A coluna está na chave de ordem e a ordem é ascendente.
D = A coluna está na chave de ordem e a ordem é descendente.

NULL = A coluna não participa na ordenação.

Nullable.
hidden_column smallint 0 = esta coluna aparece na lista de seleção.

1 = Reservado para uso futuro.
columnid int ID da coluna base. Se a coluna do conjunto de resultados foi construída a partir de uma expressão, columnid é -1.
objectid int ID de objeto do objeto ou tabela base que fornece a coluna. Se a coluna do conjunto de resultados foi construída a partir de uma expressão, objectid é -1.
dbid int ID da base de dados que contém a tabela base que fornece a coluna. Se a coluna do conjunto de resultados foi construída a partir de uma expressão, dbid é -1.
dbname sysname Nome da base de dados que contém a tabela base que fornece a coluna. Se a coluna do conjunto de resultados foi construída a partir de uma expressão, dbname é NULL.

Nullable.

Remarks

sp_describe_cursor_columns descreve os atributos das colunas no conjunto de resultados de um cursor servidor, como o nome e o tipo de dados de cada cursor. Use sp_describe_cursor para uma descrição dos atributos globais do cursor do servidor. Use sp_describe_cursor_tables para um relatório das tabelas base referenciadas pelo 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_columns para reportar as colunas usadas no cursor.

USE AdventureWorks2022;
GO

-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET
    FOR SELECT LastName
        FROM Person.Person;
GO

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_columns.
DECLARE @Report AS CURSOR;

-- Execute sp_describe_cursor_columns into the cursor variable.
EXECUTE master.dbo.sp_describe_cursor_columns
    @cursor_return = @Report OUTPUT,
    @cursor_source = N'global',
    @cursor_identity = N'abc';

-- Fetch all the rows from the sp_describe_cursor_columns 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_columns.
CLOSE @Report;

DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;

DEALLOCATE abc;
GO