sys.dm_exec_describe_first_result_set (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Fungsi manajemen dinamis ini mengambil pernyataan Transact-SQL sebagai parameter dan menjelaskan metadata hasil pertama yang ditetapkan untuk pernyataan tersebut.

sys.dm_exec_describe_first_result_set memiliki definisi tataan hasil yang sama dengan sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) dan mirip dengan sp_describe_first_result_set (Transact-SQL).

Konvensi sintaks transact-SQL

Sintaks

  
sys.dm_exec_describe_first_result_set(@tsql, @params, @include_browse_information)  

Argumen

@tsql
Satu atau beberapa pernyataan Transact-SQL. Transact-SQL_batch mungkin nvarchar(n) atau nvarchar(max).

@params
@params menyediakan string deklarasi untuk parameter untuk batch Transact-SQL, mirip dengan sp_executesql. Parameter mungkin nvarchar(n) atau nvarchar(maks).

Adalah satu string yang berisi definisi semua parameter yang telah disematkan dalam Transact-SQL_batch. String harus berupa konstanta Unicode atau variabel Unicode. Setiap definisi parameter terdiri dari nama parameter dan jenis data. n adalah tempat penampung yang menunjukkan definisi parameter tambahan. Setiap parameter yang ditentukan dalam stmt harus didefinisikan dalam @params. Jika pernyataan Transact-SQL atau batch dalam pernyataan tidak berisi parameter, @params tidak diperlukan. NULL adalah nilai default untuk parameter ini.

@include_browse_information
Jika diatur ke 1, setiap kueri dianalisis seolah-olah memiliki opsi UNTUK TELUSURI pada kueri. Kolom kunci tambahan dan informasi tabel sumber dikembalikan.

Tabel Dikembalikan

Metadata umum ini dikembalikan sebagai kumpulan hasil. Satu baris untuk setiap kolom dalam metadata hasil menjelaskan jenis dan nullability kolom dalam format yang diperlihatkan dalam tabel berikut. Jika pernyataan pertama tidak ada untuk setiap jalur kontrol, hasil yang ditetapkan dengan baris nol dikembalikan.

Nama kolom Jenis data Deskripsi
is_hidden bit Menentukan bahwa kolom adalah kolom tambahan yang ditambahkan untuk tujuan penjelajahan dan informasi yang sebenarnya tidak muncul dalam tataan hasil.
column_ordinal int Berisi posisi ordinal kolom dalam tataan hasil. Posisi kolom pertama akan ditentukan sebagai 1.
nama nama sysname Berisi nama kolom jika nama dapat ditentukan. Jika tidak, akan berisi NULL.
is_nullable bit Berisi nilai berikut:

Nilai 1 jika kolom memungkinkan NULL.

Nilai 0 jika kolom tidak mengizinkan NULL.

Nilai 1 jika tidak dapat ditentukan bahwa kolom mengizinkan NULL.
system_type_id int Berisi system_type_id tipe data kolom seperti yang ditentukan dalam sys.type. Untuk jenis CLR, meskipun kolom system_type_name akan mengembalikan NULL, kolom ini akan mengembalikan nilai 240.
system_type_name nvarchar(256) Berisi nama dan argumen (seperti panjang, presisi, skala), yang ditentukan untuk jenis data kolom.

Jika jenis data adalah jenis alias yang ditentukan pengguna, jenis sistem yang mendasar ditentukan di sini.

Jika jenis data adalah jenis yang ditentukan pengguna CLR, NULL dikembalikan di kolom ini.
max_length smallint Panjang maksimum (dalam byte) kolom.

-1 = Jenis data kolom adalah varchar(max), nvarchar(max), varbinary(max), atau xml.

Untuk kolom teks , nilai max_length akan menjadi 16 atau nilai yang ditetapkan oleh sp_tableoption 'teks dalam baris'.
Presisi kecil Presisi kolom jika berbasis numerik. Jika tidak, mengembalikan 0.
Skala kecil Skala kolom jika berbasis numerik. Jika tidak, mengembalikan 0.
collation_name nama sysname Nama kolater kolom jika berbasis karakter. Jika tidak, mengembalikan NULL.
user_type_id int Untuk jenis CLR dan alias, berisi user_type_id tipe data kolom seperti yang ditentukan dalam sys.type. Jika tidak, null.
user_type_database nama sysname Untuk jenis CLR dan alias, berisi nama database tempat jenis ditentukan. Jika tidak, null.
user_type_schema nama sysname Untuk jenis CLR dan alias, berisi nama skema di mana jenis ditentukan. Jika tidak, null.
user_type_name nama sysname Untuk jenis CLR dan alias, berisi nama jenis . Jika tidak, null.
assembly_qualified_type_name nvarchar(4000) Untuk jenis CLR, mengembalikan nama rakitan dan kelas yang menentukan jenisnya. Jika tidak, null.
xml_collection_id int Berisi xml_collection_id tipe data kolom seperti yang ditentukan dalam sys.columns. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML.
xml_collection_database nama sysname Berisi database tempat kumpulan skema XML yang terkait dengan jenis ini ditentukan. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML.
xml_collection_schema nama sysname Berisi skema di mana kumpulan skema XML yang terkait dengan jenis ini ditentukan. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML.
xml_collection_name nama sysname Berisi nama kumpulan skema XML yang terkait dengan tipe ini. Kolom ini mengembalikan NULL jika jenis yang dikembalikan tidak terkait dengan kumpulan skema XML.
is_xml_document bit Mengembalikan 1 jika jenis data yang dikembalikan adalah XML dan jenis tersebut dijamin sebagai dokumen XML lengkap (termasuk simpul akar), dibandingkan dengan fragmen XML). Jika tidak, mengembalikan 0.
is_case_sensitive bit Mengembalikan 1 jika kolom adalah jenis string peka huruf besar/kecil. Mengembalikan 0 jika tidak.
is_fixed_length_clr_type bit Mengembalikan 1 jika kolom berjenis CLR dengan panjang tetap. Mengembalikan 0 jika tidak.
source_server nama sysname Nama server asal (jika berasal dari server jarak jauh). Nama diberikan seperti yang muncul di sys.servers. Mengembalikan NULL jika kolom berasal dari server lokal atau jika tidak dapat ditentukan server mana yang berasal. Hanya diisi jika informasi penjelajahan diminta.
source_database nama sysname Nama database asal yang dikembalikan oleh kolom dalam hasil ini. Mengembalikan NULL jika database tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta.
source_schema nama sysname Nama skema asal yang dikembalikan oleh kolom dalam hasil ini. Mengembalikan NULL jika skema tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta.
source_table nama sysname Nama tabel asal yang dikembalikan oleh kolom dalam hasil ini. Mengembalikan NULL jika tabel tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta.
source_column nama sysname Nama kolom asal yang dikembalikan oleh kolom hasil. Mengembalikan NULL jika kolom tidak dapat ditentukan. Hanya diisi jika informasi penjelajahan diminta.
is_identity_column bit Mengembalikan 1 jika kolom adalah kolom identitas dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom adalah kolom identitas.
is_part_of_unique_key bit Mengembalikan 1 jika kolom adalah bagian dari indeks unik (termasuk batasan unik dan utama) dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom adalah bagian dari indeks unik. Hanya diisi jika informasi penjelajahan diminta.
is_updateable bit Mengembalikan 1 jika kolom dapat diperbarui dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom dapat diperbarui.
is_computed_column bit Mengembalikan 1 jika kolom adalah kolom komputasi dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan jika kolom adalah kolom komputasi.
is_sparse_column_set bit Mengembalikan 1 jika kolom adalah kolom jarang dan 0 jika tidak. Mengembalikan NULL jika tidak dapat ditentukan bahwa kolom adalah bagian dari kumpulan kolom jarang.
ordinal_in_order_by_list smallint posisi ihe kolom ini ada dalam daftar ORDER BY. Mengembalikan NULL jika kolom tidak muncul dalam daftar ORDER BY, atau jika daftar ORDER BY tidak dapat ditentukan secara unik.
order_by_list_length smallint Panjang daftar ORDER BY. NULL dikembalikan jika tidak ada daftar ORDER BY atau jika daftar ORDER BY tidak dapat ditentukan secara unik. Perhatikan bahwa nilai ini akan sama untuk semua baris yang dikembalikan oleh sp_describe_first_result_set.
order_by_is_descending smallint NULL Jika ordinal_in_order_by_list bukan NULL, kolom order_by_is_descending melaporkan arah klausa ORDER BY untuk kolom ini. Jika tidak, ia melaporkan NULL.
error_number int Berisi nomor kesalahan yang dikembalikan oleh fungsi . Jika tidak ada kesalahan yang terjadi, kolom akan berisi NULL.
error_severity int Berisi tingkat keparahan yang dikembalikan oleh fungsi . Jika tidak ada kesalahan yang terjadi, kolom akan berisi NULL.
error_state int Berisi pesan status. dikembalikan oleh fungsi . Jika tidak ada kesalahan yang terjadi, kolom akan berisi NULL.
error_message nvarchar(4096) Berisi pesan yang dikembalikan oleh fungsi. Jika tidak ada kesalahan yang terjadi, kolom akan berisi NULL.
error_type int Berisi bilangan bulat yang mewakili kesalahan yang dikembalikan. Peta ke error_type_desc. Lihat daftar di bawah keterangan.
error_type_desc nvarchar(60) Berisi string huruf besar pendek yang mewakili kesalahan yang dikembalikan. Peta ke error_type. Lihat daftar di bawah keterangan.

Keterangan

Fungsi ini menggunakan algoritma yang sama dengan sp_describe_first_result_set. Untuk informasi selengkapnya, lihat sp_describe_first_result_set (Transact-SQL).

Tabel berikut mencantumkan jenis kesalahan dan deskripsinya

error_type error_type Deskripsi
1 MISC Semua kesalahan yang tidak dijelaskan sebaliknya.
2 SINTAKS Terjadi kesalahan sintaks dalam batch.
3 CONFLICTING_RESULTS Hasilnya tidak dapat ditentukan karena konflik antara dua kemungkinan pernyataan pertama.
4 DYNAMIC_SQL Hasilnya tidak dapat ditentukan karena SQL dinamis yang berpotensi mengembalikan hasil pertama.
5 CLR_PROCEDURE Hasilnya tidak dapat ditentukan karena prosedur tersimpan CLR berpotensi mengembalikan hasil pertama.
6 CLR_TRIGGER Hasilnya tidak dapat ditentukan karena pemicu CLR berpotensi mengembalikan hasil pertama.
7 EXTENDED_PROCEDURE Hasilnya tidak dapat ditentukan karena prosedur tersimpan yang diperpanjang berpotensi mengembalikan hasil pertama.
8 UNDECLARED_PARAMETER Hasilnya tidak dapat ditentukan karena tipe data dari satu atau beberapa kolom kumpulan hasil berpotensi bergantung pada parameter yang tidak dinyatakan.
9 REKURSI Hasilnya tidak dapat ditentukan karena batch berisi pernyataan rekursif.
10 TEMPORARY_TABLE Hasilnya tidak dapat ditentukan karena batch berisi tabel sementara dan tidak didukung oleh sp_describe_first_result_set .
11 UNSUPPORTED_STATEMENT Hasilnya tidak dapat ditentukan karena batch berisi pernyataan yang tidak didukung oleh sp_describe_first_result_set (misalnya, FETCH, REVERT dll.).
12 OBJECT_TYPE_NOT_SUPPORTED @object_id yang diteruskan ke fungsi tidak didukung (yaitu bukan prosedur tersimpan)
13 OBJECT_DOES_NOT_EXIST @object_id yang diteruskan ke fungsi tidak ditemukan dalam katalog sistem.

Izin

Memerlukan izin untuk menjalankan argumen @tsql.

Contoh

Contoh tambahan dalam topik sp_describe_first_result_set (Transact-SQL) dapat disesuaikan untuk menggunakan sys.dm_exec_describe_first_result_set.

J. Mengembalikan informasi tentang satu pernyataan Transact-SQL

Kode berikut mengembalikan informasi tentang hasil pernyataan Transact-SQL.

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_exec_describe_first_result_set  
(N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0) ;  

B. Mengembalikan informasi tentang prosedur

Contoh berikut membuat prosedur tersimpan bernama pr_TestProc yang mengembalikan dua kumpulan hasil. Kemudian contoh menunjukkan bahwa sys.dm_exec_describe_first_result_set mengembalikan informasi tentang hasil pertama yang ditetapkan dalam prosedur.

USE AdventureWorks2022;  
GO  
  
CREATE PROC Production.TestProc  
AS  
SELECT Name, ProductID, Color FROM Production.Product ;  
SELECT Name, SafetyStockLevel, SellStartDate FROM Production.Product ;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set  
('Production.TestProc', NULL, 0) ;  

C. Mengembalikan metadata dari batch yang berisi beberapa pernyataan

Contoh berikut mengevaluasi batch yang berisi dua pernyataan Transact-SQL. Kumpulan hasil menjelaskan kumpulan hasil pertama yang dikembalikan.

USE AdventureWorks2022;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set(  
N'SELECT CustomerID, TerritoryID, AccountNumber FROM Sales.Customer WHERE CustomerID = @CustomerID;  
SELECT * FROM Sales.SalesOrderHeader;',  
N'@CustomerID int', 0) AS a;  
GO  

Lihat Juga

sp_describe_first_result_set (T-SQL)
sp_describe_undeclared_parameters (T-SQL)
sys.dm_exec_describe_first_result_set_for_object (T-SQL)