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 = ] 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
paraLOCAL
, @cursor_identity serálocal
.Se cursor tiver a palavra-chave ou for padronizado
GLOBAL
paraGLOBAL
, @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 chamandoSQLSetCursorName
.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 = Marcador2 = Comprimento fixo4 = anulável8 = Controle de versão de linha16 = 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