Compartilhar via


sp_describe_cursor_columns (Transact-SQL)

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

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_describe_cursor_columns 
   [ @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_variableOUTPUT
    É o nome de uma variável de cursor declarada para receber a saída do cursor. output_cursor_variable é cursor, sem padrão, e não deve estar associado a nenhum cursor, no momento em que sp_describe_cursor_columns for 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 está 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 o padrão GLOBAL. global_cursor_name é nvarchar(128).

    global_cursor_name também pode ser o nome de um cursor de servidor de API que é aberto por um aplicativo ODBC e depois nomeado chamando-se SQLSetCursorName.

  • [ @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 de código de retorno

Nenhum

Cursores retornados

sp_describe_cursor_columns encapsula seu relatório como um parâmetro de saída Transact-SQLcursor. Isso habilita lotes Transact-SQL, procedimentos armazenados e gatilhos a trabalharem com a saída, uma linha de cada vez. Isto também significa que o procedimento não pode ser chamado diretamente de funções da API do banco de dados. O parâmetro de saída cursor deve ser associado a uma variável de programa, mas as APIs do banco de dados não oferecem suporte para parâmetros ou variáveis de associação cursor.

A tabela a seguir mostra o formato do cursor retornado ao se usar sp_describe_cursor_columns.

Nome da coluna

Tipo de dados

Descrição

column_name

sysname (permite valor nulo)

Nome atribuído à coluna do conjunto de resultados. A coluna será NULL se foi especificada sem uma cláusula AS respectiva.

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

Um bitmask que indica as informações armazenadas em DBCOLUMNFLAGS no OLE DB. Pode ser um ou uma combinação dos seguintes:

1 = Indicador

2 = Comprimento fixo

4 = Permite valor nulo

8 = Controle de versão de linha

16 = Coluna atualizável (defina para colunas projetadas de um cursor que não tenha uma cláusula FOR UPDATE e, se houver tal coluna, poderá ser apenas uma por cursor).

Quando valores de bit são combinados, as características dos valores do bit combinado serão aplicados. Por exemplo, se o valor do bit for 6, a coluna será de comprimento fixo (2) e permitirá valor nulo (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 SQL Server da coluna.

column_precision

tinyint

Precisão máxima da coluna conforme o valor de bPrecision no OLE DB.

column_scale

tinyint

Número de dígitos à direita da vírgula decimal para os tipos de dados numeric ou decimal, conforme o valor de bScale no 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)(permite valor nulo)

A = A coluna está na chave de ordem e a ordenação é crescente.

D = A coluna está na chave de ordem e a ordenação é decrescente.

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

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 será -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 será -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 será -1.

dbname

sysname

(permite valor nulo)

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 será NULL.

Comentários

sp_describe_cursor_columns descreve os atributos das colunas no conjunto de resultados de um cursor de servidor, tais como o nome e o tipo de dados de cada cursor. Use sp_describe_cursor para obter uma descrição dos atributos globais do cursor de servidor. Use sp_describe_cursor_tables para obter um relatório das tabelas base referenciadas pelo cursor. Para obter um relatório dos cursores de servidor Transact-SQL visíveis na conexão, use sp_cursor_list.

Permissões

Requer associação na 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 AdventureWorks;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact;
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