Partilhar via


sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Esta função de gestão dinâmica toma um @object_id como parâmetro e descreve os primeiros metadados de resultado para o módulo com esse ID. O @object_id especificado pode ser o ID de um procedimento armazenado Transact-SQL ou de um gatilho Transact-SQL. Se for o ID de qualquer outro objeto (como uma vista, tabela, função ou procedimento CLR), será especificado um erro nas colunas de erro do resultado.

sys.dm_exec_describe_first_result_set_for_object tem a mesma definição de conjunto de resultados que sys.dm_exec_describe_first_result_set (Transact-SQL) e é semelhante a sp_describe_first_result_set (Transact-SQL).

Transact-SQL convenções de sintaxe

Sintaxe

  
sys.dm_exec_describe_first_result_set_for_object   
    ( @object_id , @include_browse_information )  

Arguments

@object_id
O @object_id de um procedimento Transact-SQL armazenado ou de um gatilho Transact-SQL. @object_id é o tipo int.

@include_browse_information
@include_browse_information é tipo bit. Se definida para 1, cada consulta é analisada como se tivesse uma opção FOR BROWSE na consulta. Devolve colunas chave adicionais e informação da tabela de origem.

Tabela retornada

Estes metadados comuns são devolvidos como um conjunto de resultados com uma linha para cada coluna nos metadados de resultados. Cada linha descreve o tipo e a nulidade da coluna no formato descrito na secção seguinte. Se a primeira afirmação não existir para todos os caminhos de controlo, é devolvido um conjunto de resultados com zero linhas.

Nome da coluna Tipo de dados Description
is_hidden bit Especifica se a coluna é uma coluna extra adicionada para fins de informação de navegação que não aparece efetivamente no conjunto de resultados.
column_ordinal int Contém a posição ordinal da coluna no conjunto de resultados. A posição da primeira coluna será especificada como 1.
name sysname Contém o nome da coluna, caso seja possível determinar um nome. Caso contrário, é NULO.
is_nullable bit Contém o valor 1 se a coluna permitir NULLs, 0 se a coluna não permitir NULLs, e 1 se não for possível determinar que a coluna permite NULLs.
system_type_id int Contém a system_type_id do tipo de dados da coluna conforme especificado em sys.types. Para tipos CLR, mesmo que a coluna system_type_name devolva NULL, esta coluna devolverá o valor 240.
system_type_name Nvarchar(256) Contém o nome do tipo de dados. Inclui argumentos (como comprimento, precisão, escala) especificados para o tipo de dado da coluna. Se o tipo de dado for um tipo de alias definido pelo utilizador, o tipo de sistema subjacente é especificado aqui. Se for um tipo CLR definido pelo utilizador, NULL é devolvido nesta coluna.
max_length smallint Comprimento máximo (em bytes) da coluna.

-1 = O tipo de dados da coluna é varchar(max), nvarchar(max), varbinary(max) ou xml.

Para colunas de texto , o valor max_length será 16 ou o valor definido por sp_tableoption 'texto na linha'.
precision tinyint A precisão da coluna se for baseada em números. Caso contrário, devolve 0.
scale tinyint Escala da coluna se baseada em números. Caso contrário, devolve 0.
collation_name sysname Nome da coluna da coluna se for baseada em caracteres. Caso contrário, devolve NULL.
user_type_id int Para CLR e tipos de alias, contém a user_type_id do tipo de dados da coluna conforme especificado em sys.types. Caso contrário, é NULO.
user_type_database sysname Para CLR e tipos de alias, contém o nome da base de dados onde o tipo está definido. Caso contrário, é NULO.
user_type_schema sysname Para tipos CLR e alias, contém o nome do esquema em que o tipo está definido. Caso contrário, é NULO.
user_type_name sysname Para CLR e tipos de alias, contém o nome do tipo. Caso contrário, é NULO.
assembly_qualified_type_name Nvarchar(4000) Para tipos CLR, devolve o nome da assembly e da classe que define o tipo. Caso contrário, é NULO.
xml_collection_id int Contém a xml_collection_id do tipo de dados da coluna conforme especificado em sys.columns. Esta coluna devolverá NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML.
xml_collection_database sysname Contém a base de dados onde está definida a coleção de esquemas XML associada a este tipo. Esta coluna devolverá NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML.
xml_collection_schema sysname Contém o esquema em que a coleção de esquemas XML associada a este tipo está definida. Esta coluna devolverá NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML.
xml_collection_name sysname Contém o nome da coleção de esquemas XML associada a este tipo. Esta coluna devolverá NULL se o tipo devolvido não estiver associado a uma coleção de esquema XML.
is_xml_document bit Retorna 1 se o tipo de dado devolvido for XML e esse tipo for garantido como um documento XML completo (incluindo um nó raiz), em vez de um fragmento XML). Caso contrário, devolve 0.
is_case_sensitive bit Retorna 1 se a coluna for de um tipo de cadeia sensível a maiúsculas minúsculas e 0 se não for.
is_fixed_length_clr_type bit Retorna 1 se a coluna for do tipo CLR de comprimento fixo e 0 se não for.
source_server sysname O nome do servidor de origem é devolvido pela coluna neste resultado (se for originado de um servidor remoto). O nome é dado tal como aparece em sys.servers. Devolve NULL se a coluna tiver origem no servidor local, ou se não for possível determinar em que servidor se origina. Só é preenchido se forem solicitadas informações de navegação.
source_database sysname O nome da base de dados originária é devolvido pela coluna deste resultado. Devolve NULL se a base de dados não puder ser determinada. Só é preenchido se forem solicitadas informações de navegação.
source_schema sysname Nome do esquema originário devolvido pela coluna neste resultado. Devolve NULL se o esquema não puder ser determinado. Só é preenchido se forem solicitadas informações de navegação.
source_table sysname O nome da tabela de origem é devolvido pela coluna deste resultado. Retorna NULL se a tabela não puder ser determinada. Só é preenchido se forem solicitadas informações de navegação.
source_column sysname O nome da coluna de origem é devolvido pela coluna deste resultado. Retorna NULL se a coluna não puder ser determinada. Só é preenchido se forem solicitadas informações de navegação.
is_identity_column bit Devolve 1 se a coluna for uma coluna identidade e 0 se não. Retorna NULL se não for possível determinar que a coluna é uma coluna identidade.
is_part_of_unique_key bit Retorna 1 se a coluna fizer parte de um índice único (incluindo restrição única e primária) e 0 se não. Devolve NULL se não for possível determinar que a coluna faz parte de um índice único. Só é preenchido se forem solicitadas informações de navegação.
is_updateable bit Retorna 1 se a coluna for atualizável e 0 se não for possível. Retorna NULL se não for possível determinar que a coluna é atualizável.
is_computed_column bit Devolve 1 se a coluna for uma coluna calculada e 0 se não for. Retorna NULL se não for possível determinar que a coluna é uma coluna computada.
is_sparse_column_set bit Devolve 1 se a coluna for esparsa e 0 se não. Retorna NULL se não se puder determinar que a coluna faz parte de um conjunto de colunas esparsas.
ordinal_in_order_by_list smallint A posição desta coluna na lista ORDER BY devolve NULL se a coluna não aparecer na lista ORDER BY ou se a lista ORDER BY não puder ser determinada de forma única.
order_by_list_length smallint Comprimento da lista ORDER BY. Devolve NULL se não existir uma lista ORDER BY ou se a lista ORDER BY não puder ser determinada de forma única. Note que este valor será o mesmo para todas as linhas devolvidas por sp_describe_first_result_set.
order_by_is_descending smallint NULL Se o ordinal_in_order_by_list não for NULL, a coluna order_by_is_descending reporta a direção da cláusula ORDER BY para esta coluna. Caso contrário, reporta NULL.
error_number int Contém o número de erro devolvido pela função. Contém NULL se não ocorrer erro na coluna.
error_severity int Contém a gravidade devolvida pela função. Contém NULL se não ocorrer erro na coluna.
error_state int Contém a mensagem de estado devolvida pela função. Se não ocorrer erro. a coluna conterá NULL.
error_message nvarchar(4096) Contém a mensagem devolvida pela função. Se não ocorrer erro, a coluna conterá NULL.
error_type int Contém um inteiro que representa o erro que está a ser devolvido. Mapas para error_type_desc. Veja a lista em observações.
error_type_desc Nvarchar(60) Contém uma curta cadeia maiúscula que representa o erro devolvido. Mapas para error_type. Veja a lista em observações.

Observações

Esta função utiliza o mesmo algoritmo que sp_describe_first_result_set. Para mais informações, consulte sp_describe_first_result_set (Transact-SQL).

A tabela seguinte lista os tipos de erro e as suas descrições

error_type error_type Description
1 MISC Todos os erros que não são descritos de outra forma.
2 SINTAXE Ocorreu um erro de sintaxe no lote.
3 CONFLICTING_RESULTS O resultado não pôde ser determinado devido a um conflito entre duas possíveis primeiras afirmações.
4 DYNAMIC_SQL O resultado não pôde ser determinado devido ao SQL dinâmico que poderia potencialmente devolver o primeiro resultado.
5 CLR_PROCEDURE O resultado não podia ser determinado porque um procedimento armazenado CLR poderia potencialmente devolver o primeiro resultado.
6 CLR_TRIGGER O resultado não pôde ser determinado porque um gatilho CLR poderia potencialmente devolver o primeiro resultado.
7 EXTENDED_PROCEDURE O resultado não podia ser determinado porque um procedimento armazenado prolongado poderia potencialmente devolver o primeiro resultado.
8 UNDECLARED_PARAMETER O resultado não pôde ser determinado porque o tipo de dados de uma ou mais colunas do conjunto de resultados depende potencialmente de um parâmetro não declarado.
9 RECURSÃO O resultado não pôde ser determinado porque o lote contém uma afirmação recursiva.
10 TEMPORARY_TABLE O resultado não pôde ser determinado porque o lote contém uma tabela temporária e não é suportado por sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT O resultado não pôde ser determinado porque o lote contém uma instrução que não é suportada por sp_describe_first_result_set (por exemplo, FETCH, REVERT, etc.).
12 OBJECT_ID_NOT_SUPPORTED A @object_id função passada não é suportada (ou seja, não é um procedimento armazenado)
13 OBJECT_ID_DOES_NOT_EXIST A @object_id passagem para a função não foi encontrada no catálogo do sistema.

Permissions

Requer permissão para executar o @tsql argumento.

Examples

A. Devolver metadados com e sem informação de navegação

O exemplo seguinte cria um procedimento armazenado chamado TestProc2 que devolve dois conjuntos de resultados. Depois, o exemplo demonstra que sys.dm_exec_describe_first_result_set devolve informação sobre o primeiro conjunto de resultados no procedimento, com e sem a informação de navegação.

CREATE PROC TestProc2  
AS  
SELECT object_id, name FROM sys.objects ;  
SELECT name, schema_id, create_date FROM sys.objects ;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 0) ;  
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 1) ;  
GO  

B. Combinar a função sys.dm_exec_describe_first_result_set_for_object e uma tabela ou vista

O exemplo seguinte utiliza tanto a vista de catálogo do sistema sys.procedures como a função sys.dm_exec_describe_first_result_set_for_object para mostrar metadados dos conjuntos de resultados de todos os procedimentos armazenados na AdventureWorks2025 base de dados.

USE AdventureWorks2022;  
GO  
  
SELECT p.name, r.*   
FROM sys.procedures AS p  
CROSS APPLY sys.dm_exec_describe_first_result_set_for_object(p.object_id, 0) AS r;  
GO  
  

Ver também

sp_describe_first_result_set (Transact-SQL)
sp_describe_undeclared_parameters (Transact-SQL)
sys.dm_exec_describe_first_result_set (Transact-SQL)