Sdílet prostřednictvím


sys.dm_exec_describe_first_result_set_for_object (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Tato funkce dynamické správy přijímá parametr a @object_id popisuje první metadata výsledku modulu s tímto ID. Specifikovaným @object_id může být ID Transact-SQL uložené procedury nebo Transact-SQL spouštěč. Pokud je to ID jakéhokoli jiného objektu (například pohledu, tabulky, funkce nebo CLR procedury), chyba bude specifikována ve sloupcích chyby výsledku.

sys.dm_exec_describe_first_result_set_for_object má stejnou definici množiny výsledků jako sys.dm_exec_describe_first_result_set (Transact-SQL) a je podobný sp_describe_first_result_set (Transact-SQL).

Transact-SQL konvence syntaxe

Syntaxe

  
sys.dm_exec_describe_first_result_set_for_object   
    ( @object_id , @include_browse_information )  

Arguments

@object_id
Jedná se o @object_id Transact-SQL uloženou proceduru nebo Transact-SQL spouštěč. @object_id je typ int.

@include_browse_information
@include_browse_information je typ bit. Pokud je dotaz nastaven na 1, je analyzován, jako by měl možnost PRO PROHLÍŽENÍ. Vrací další klíčové sloupce a informace o zdrojové tabulce.

Vrácená tabulka

Tato běžná metadata se vracejí jako sada výsledků s jedním řádkem pro každý sloupec v metadatech výsledků. Každý řádek popisuje typ a neplatnost sloupce ve formátu popsaném v následující sekci. Pokud první příkaz neexistuje pro každou řídicí cestu, vrátí se výsledná množina s nulovým řádkem.

Název sloupce Datový typ Description
is_hidden bit Specifikuje, zda je sloupec navíc přidaný pro účely prohlížení, který se ve výsledku ve skutečnosti neobjevuje.
column_ordinal int Obsahuje ordinální pozici sloupce ve výsledné množině. Pozice prvního sloupce bude určena jako 1.
název sysname Obsahuje název sloupce, pokud lze určit jméno. Jinak je NULL.
is_nullable bit Obsahuje hodnotu 1, pokud sloupec povoluje NULL, 0, pokud sloupec NULL nepovoluje, a 1, pokud nelze určit, že sloupec povoluje NULL.
system_type_id int Obsahuje system_type_id datového typu sloupce, jak je specifikováno v sys.types. U typů CLR, i když sloupec system_type_name vrátí NULL, tento sloupec vrátí hodnotu 240.
system_type_name nvarchar(256) Obsahuje název datového typu. Zahrnuje argumenty (jako délka, přesnost, měřítko) určené pro datový typ sloupce. Pokud je datový typ uživatelem definovaný alias typ, zde je specifikován základní typ systému. Pokud je to uživatelsky definovaný typ CLR, v tomto sloupci se vrací NULL.
max_length smallint Maximální délka sloupce (v bajtech).

-1 = Datový typ sloupce je varchar(max), nvarchar(max), varbinary(max) nebo xml.

U textových sloupců bude hodnota max_length 16 nebo hodnota nastavená sp_tableoption 'text in line'.
přesnost tinyint Přesnost sloupce, pokud je založena na číslech. Jinak vrací 0.
scale tinyint Měřítko sloupce, pokud je založeno na číslech. Jinak vrací 0.
collation_name sysname Název třídění sloupce, pokud je založeno na znacích. Jinak vrací NULL.
user_type_id int Pro typy CLR a alias, obsahuje user_type_id datového typu sloupce, jak je specifikováno v sys.types. Jinak je NULL.
user_type_database sysname Pro typy CLR a alias, obsahuje název databáze, ve které je typ definován. Jinak je NULL.
user_type_schema sysname Pro CLR a aliasové typy obsahuje název schématu, ve kterém je typ definován. Jinak je NULL.
user_type_name sysname Pro CLR a aliasy obsahuje název typu. Jinak je NULL.
assembly_qualified_type_name nvarchar(4000) Pro CLR typy vrací název assembleru a třídu definující typ. Jinak je NULL.
xml_collection_id int Obsahuje xml_collection_id datového typu sloupce, jak je specifikováno v sys.columns. Tento sloupec vrátí NULL, pokud typ vrácený není přiřazen ke skupině XML schématu.
xml_collection_database sysname Obsahuje databázi, ve které je definována XML kolekce schémat spojená s tímto typem. Tento sloupec vrátí NULL, pokud typ vrácený není přiřazen ke skupině XML schématu.
xml_collection_schema sysname Obsahuje schéma, ve kterém je definována XML kolekce schémat spojená s tímto typem. Tento sloupec vrátí NULL, pokud typ vrácený není přiřazen ke skupině XML schématu.
xml_collection_name sysname Obsahuje název kolekce XML schématu spojeného s tímto typem. Tento sloupec vrátí NULL, pokud typ vrácený není přiřazen ke skupině XML schématu.
is_xml_document bit Vrátí 1, pokud je vrácený datový typ XML a tento typ je zaručeně kompletní XML dokument (včetně kořenového uzlu), na rozdíl od XML fragmentu. Jinak vrací 0.
is_case_sensitive bit Vrátí 1, pokud je sloupec řetězce citlivého na velikost písmen, a 0, pokud není.
is_fixed_length_clr_type bit Vrátí 1, pokud je sloupec typu CLR s pevnou délkou, a 0, pokud není.
source_server sysname Název původního serveru vrácený sloupcem v tomto výsledku (pokud pochází ze vzdáleného serveru). Název je uveden tak, jak se objevuje v sys.servers. Vrátí NULL, pokud sloupec pochází z lokálního serveru, nebo pokud nelze určit, ze kterého serveru pochází. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení.
source_database sysname Název původní databáze vrácený sloupcem v tomto výsledku. Pokud nelze databázi určit, vrátí NULL. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení.
source_schema sysname Název původního schématu vrácený sloupcem v tomto výsledku. Vrátí NULL, pokud schéma nelze určit. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení.
source_table sysname Název původní tabulky vrácené sloupcem v tomto výsledku. Pokud tabulku nelze určit, vrátí NULL. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení.
source_column sysname Název sloupce vrácený sloupcem v tomto výsledku. Vrátí NULL, pokud nelze sloupec určit. Je vyplněn pouze tehdy, pokud jsou požadovány informace o prohlížení.
is_identity_column bit Vrátí 1, pokud je sloupec identifikační, a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je identitní sloupec.
is_part_of_unique_key bit Vrátí 1, pokud je sloupec součástí jedinečného indexu (včetně jedinečného a primárního omezení), a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je součástí unikátního indexu. Zobrazí se pouze tehdy, pokud jsou požadovány informace o prohlížení.
is_updateable bit Vrátí 1, pokud je sloupec aktualizovatelný, a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je aktualizovatelný.
is_computed_column bit Vrátí 1, pokud je sloupec vypočtený, a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je vypočítaný sloupec.
is_sparse_column_set bit Vrátí 1, pokud je sloupec řídký, a 0, pokud ne. Vrátí NULL, pokud nelze určit, že sloupec je součástí množiny řídkých sloupců.
ordinal_in_order_by_list smallint Pozice tohoto sloupce v seznamu ORDER BY Vrátí NULL, pokud se sloupec neobjevuje v seznamu ORDER BY nebo pokud nelze jednoznačně určit seznam ORDER BY.
order_by_list_length smallint Délka seznamu ORDER BY. Vrátí NULL, pokud neexistuje seznam ORDER BY nebo pokud seznam ORDER BY nelze jednoznačně určit. Všimněte si, že tato hodnota bude stejná pro všechny řádky vrácené o sp_describe_first_result_set.
order_by_is_descending smallint NULL Pokud ordinal_in_order_by_list není NULL, sloupec order_by_is_descending hlásí směr klauzule ORDER BY pro tento sloupec. Jinak hlásí NULL.
error_number int Obsahuje chybové číslo vrácené funkcí. Obsahuje NULL, pokud v sloupci nenastala chyba.
error_severity int Obsahuje závažnost vrácenou funkcí. Obsahuje NULL, pokud v sloupci nenastala chyba.
error_state int Obsahuje zprávu o stavu vrácenou funkcí. Pokud nedošlo k žádné chybě. sloupec bude obsahovat NULL.
error_message nvarchar(4096) Obsahuje zprávu vrácenou funkcí. Pokud chyba nenastala, sloupec bude obsahovat NULL.
error_type int Obsahuje celé číslo představující vrácenou chybu. Mapy na error_type_desc. Viz seznam v sekci poznámky.
error_type_desc nvarchar(60) Obsahuje krátký řetězec velkých písmen reprezentující vrácenou chybu. Mapy do error_type. Viz seznam v sekci poznámky.

Poznámky

Tato funkce používá stejný algoritmus jako sp_describe_first_result_set. Pro více informací viz sp_describe_first_result_set (Transact-SQL).

Následující tabulka uvádí typy chyb a jejich popisy

error_type error_type Description
1 RŮZNÉ Všechny chyby, které nejsou jinak popsány.
2 Syntaktika V dávce došlo k chybě v syntaxi.
3 CONFLICTING_RESULTS Výsledek nebylo možné určit kvůli konfliktu mezi dvěma možnými prvními tvrzeními.
4 DYNAMIC_SQL Výsledek nebylo možné určit kvůli dynamickému SQL, které by mohlo potenciálně vrátit první výsledek.
5 CLR_PROCEDURE Výsledek nebylo možné určit, protože uložená procedura v CLR by mohla potenciálně vrátit první výsledek.
6 CLR_TRIGGER Výsledek nebylo možné určit, protože spouštěč CLR by mohl potenciálně vrátit první výsledek.
7 EXTENDED_PROCEDURE Výsledek nebylo možné určit, protože rozšířená uložená procedura by mohla potenciálně vrátit první výsledek.
8 UNDECLARED_PARAMETER Výsledek nelze určit, protože datový typ jednoho nebo více sloupců výsledné sady může potenciálně záviset na nedeklarovaném parametru.
9 REKURZE Výsledek nebylo možné určit, protože batch obsahuje rekurzivní tvrzení.
10 TEMPORARY_TABLE Výsledek nebylo možné určit, protože batch obsahuje dočasnou tabulku a není podporován sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT Výsledek nebylo možné určit, protože batch obsahuje příkaz, který není podporován sp_describe_first_result_set (např. FETCH, REVERT atd.).
12 OBJECT_ID_NOT_SUPPORTED Procedura @object_id předaná funkci není podporována (tj. není uloženou procedurou)
13 OBJECT_ID_DOES_NOT_EXIST Předané funkci @object_id nebylo v katalogu systému nalezeno.

Povolení

Vyžaduje povolení k provedení argumentu @tsql .

Examples

A. Vrácení metadat s i bez informací o prohlížení

Následující příklad vytváří uloženou proceduru nazvanou TestProc2, která vrací dvě sady výsledků. Příklad pak ukazuje, že sys.dm_exec_describe_first_result_set vrací informace o první množině výsledků v postupu, s i bez informací o prohlížení.

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. Kombinace funkce sys.dm_exec_describe_first_result_set_for_object a tabulky nebo pohledu

Následující příklad využívá jak pohled katalogu sys.procedures, tak funkci sys.dm_exec_describe_first_result_set_for_object k zobrazení metadat pro výsledkové sady všech uložených procedur v databázi AdventureWorks2025 .

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  
  

Viz také

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