Compartilhar via


sp_describe_cursor_columns (Transact-SQL)

Aplica-se: SQL Server

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

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_describe_cursor_columns
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
    , [ @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 parâmetro OUTPUT do tipo int, sem padrão, e não deve ser associado a nenhum cursor no momento sp_describe_cursor_columns em que é chamado. O cursor retornado é um cursor rolável, dinâmico, somente leitura.

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

Especifica se o cursor que está sendo relatado é 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'

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

  • Se cursor tiver a palavra-chave ou for padronizado LOCAL para LOCAL, @cursor_identity será local.

  • Se cursor tiver a palavra-chave ou for padronizado GLOBAL para GLOBAL, @cursor_identity será global. @cursor_identity também pode ser o nome de um cursor de servidor de API aberto por um aplicativo ODBC e, em seguida, nomeado chamando SQLSetCursorName.

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

Valores do código de retorno

Nenhum.

Cursores retornados

sp_describe_cursor_columns encapsula seu relatório como um parâmetro de saída Transact-SQL cursor . Isso permite que lotes, procedimentos armazenados e gatilhos do 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 do banco de dados. O cursor parâmetro de saída deve ser associado a uma variável de programa, mas as APIs de banco de dados não dão suporte a parâmetros ou variáveis de associação cursor .

A tabela a seguir mostra o formato do cursor retornado usando sp_describe_cursor_columns.

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

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

1 = Marcador
2 = Comprimento fixo
4 = anulável
8 = Controle de versão de linha
16 = Coluna atualizável (definida para colunas projetadas de um cursor que não é cláusula FOR UPDATE e, se houver tal coluna, pode haver apenas uma por cursor).

Quando valores do bit são combinados, as características desses valores combinados são aplicadas. Por exemplo, se o valor do bit for 6, a coluna será 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 dados do SQL Server da coluna.
column_precision tinyint Precisão máxima da coluna de acordo com o bPrecision valor em OLE DB.
column_scale tinyint Número de dígitos à direita do ponto decimal para os tipos de dados numéricos ou decimais de acordo com o bScale valor em OLE DB.
order_position int Se a coluna participar da 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 é crescente.
D = A coluna está na chave de ordem e a ordenação é decrescente.

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

Anulável.
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 criada a partir de uma expressão, columnid é -1.
objectid int O ID do objeto ou da tabela base que está fornecendo a coluna. Se a coluna do conjunto de resultados foi criada a partir de uma expressão, objectid é -1.
dbid int O ID do banco que dados que contém a tabela base que está fornecendo a coluna. Se a coluna do conjunto de resultados foi criada a partir de uma expressão, dbid é -1.
dbname sysname Nome do banco que dados que contém a tabela base que está fornecendo a coluna. Se a coluna do conjunto de resultados foi criada a partir de uma expressão, dbname é NULL.

Anulável.

Comentários

sp_describe_cursor_columns Descreve os atributos das colunas no conjunto de resultados de um cursor de 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 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_columns para relatar 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 CURSOR;

-- Execute sp_describe_cursor_columns into the cursor variable.
EXEC 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