sys.dm_exec_describe_first_result_set_for_object (T-SQL)
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Fungsi manajemen dinamis ini mengambil @object_id sebagai parameter dan menjelaskan metadata hasil pertama untuk modul dengan ID tersebut. Yang @object_id ditentukan dapat berupa ID prosedur tersimpan Transact-SQL atau pemicu Transact-SQL. Jika itu adalah ID objek lain (seperti tampilan, tabel, fungsi, atau prosedur CLR), kesalahan akan ditentukan dalam kolom kesalahan hasil.
sys.dm_exec_describe_first_result_set_for_object memiliki definisi tataan hasil yang sama dengan sys.dm_exec_describe_first_result_set (Transact-SQL) dan mirip dengan sp_describe_first_result_set (Transact-SQL).
Sintaks
sys.dm_exec_describe_first_result_set_for_object
( @object_id , @include_browse_information )
Argumen
@object_id
Prosedur @object_id tersimpan Transact-SQL atau pemicu Transact-SQL. @object_id adalah jenis int.
@include_browse_information
@include_browse_information adalah jenis bit. Jika diatur ke 1, setiap kueri dianalisis seolah-olah memiliki opsi UNTUK TELUSURI pada kueri. Mengembalikan kolom kunci tambahan dan informasi tabel sumber.
Tabel Dikembalikan
Metadata umum ini dikembalikan sebagai tataan hasil dengan satu baris untuk setiap kolom dalam metadata hasil. Setiap baris menjelaskan jenis dan nullabilitas kolom dalam format yang dijelaskan di bagian 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 apakah kolom adalah kolom tambahan yang ditambahkan untuk tujuan informasi penjelajahan 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, null. |
is_nullable | bit | Berisi nilai 1 jika kolom mengizinkan NULL, 0 jika kolom tidak mengizinkan NULL, dan 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 jenis data. Menyertakan 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 ini adalah jenis yang ditentukan pengguna CLR, NULL dikembalikan dalam 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. |
sisik | 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 akan 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 akan 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 akan 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 akan 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 dan 0 jika tidak. |
is_fixed_length_clr_type | bit | Mengembalikan 1 jika kolom berjenis CLR dengan panjang tetap dan 0 jika tidak. |
source_server | nama sysname | Nama server asal yang dikembalikan oleh kolom dalam hasil ini (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 darinya. 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 dalam hasil ini. 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 bahwa 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 kolom ini 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. Mengembalikan NULL 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 . Berisi NULL jika tidak ada kesalahan yang terjadi di kolom. |
error_severity | int | Berisi tingkat keparahan yang dikembalikan oleh fungsi . Berisi NULL jika tidak ada kesalahan yang terjadi di kolom. |
error_state | int | Berisi pesan status yang 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_ID_NOT_SUPPORTED | Yang @object_id diteruskan ke fungsi tidak didukung (yaitu bukan prosedur tersimpan) |
13 | OBJECT_ID_DOES_NOT_EXIST | Fungsi @object_id yang diteruskan ke tidak ditemukan dalam katalog sistem. |
Izin
Memerlukan izin untuk menjalankan @tsql argumen.
Contoh
J. Mengembalikan metadata dengan dan tanpa menelusuri informasi
Contoh berikut membuat prosedur tersimpan bernama TestProc2 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, dengan dan tanpa informasi penelusuran.
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. Menggabungkan fungsi sys.dm_exec_describe_first_result_set_for_object dan tabel atau tampilan
Contoh berikut menggunakan tampilan katalog sistem sys.procedures dan fungsi sys.dm_exec_describe_first_result_set_for_object untuk menampilkan metadata untuk kumpulan hasil semua prosedur tersimpan dalam AdventureWorks2022
database.
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
Lihat Juga
sp_describe_first_result_set (T-SQL)
sp_describe_undeclared_parameters (T-SQL)
sys.dm_exec_describe_first_result_set (T-SQL)