sp_describe_cursor_columns (Transact-SQL)

Aplica-se a: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 = ] 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_variable OUTPUT
É o nome de uma variável de cursor declarada para recebimento da saída do cursor. output_cursor_variable é cursor, sem padrão, e não deve ser associado a nenhum cursor no momento em que sp_describe_cursor_columns é 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 foi 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 aberto por um aplicativo ODBC e nomeado chamando 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 do código de retorno

Nenhum

Cursores retornados

sp_describe_cursor_columns encapsula seu relatório como um parâmetro de saída de cursor Transact-SQL. Isso permite que lotes transact-SQL, procedimentos armazenados e gatilhos funcionem 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 de banco de dados. O parâmetro de saída do cursor deve estar 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 cursor de associação.

A tabela a seguir mostra o formato do cursor retornado quando se usa sp_describe_cursor_columns.

Nome da coluna Tipo de dados Descrição
column_name sysname (anulável) Nome atribuído à coluna do conjunto de resultados. A coluna será NULL se tiver sido especificada sem uma cláusula AS associada.
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 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á 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 de acordo com o valor bPrecision no 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 valor 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)(anulável) 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 à função public.

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  

Consulte Também

Cursores
CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor_tables (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)