Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Temukan Tipe Data Kolom yang Dikembalikan dalam Kumpulan Hasil di SQL Server

Di SQL Server, ada beberapa cara untuk mendapatkan metadata dari kumpulan hasil dari kueri. Ini termasuk tipe data kolom yang dikembalikan oleh kueri T-SQL.

Khususnya, sys.dm_exec_describe_first_result_set fungsi manajemen dinamis sistem adalah pilihan yang baik untuk tugas seperti itu.

Contoh

Berikut adalah contoh untuk mendemonstrasikan cara menggunakan sys.dm_exec_describe_first_result_set untuk mendapatkan informasi tipe data tentang setiap kolom yang dikembalikan oleh kueri T-SQL yang diberikan.

SELECT 
    name,
    user_type_name,
    system_type_name,
    max_length,
    [precision],
    scale
FROM sys.dm_exec_describe_first_result_set(
    'select * from Clients', 
    null, 
    0);

Hasil:

+------------+------------------+--------------------+--------------+-------------+---------+
| name       | user_type_name   | system_type_name   | max_length   | precision   | scale   |
|------------+------------------+--------------------+--------------+-------------+---------|
| ClientCode | clientcode       | varchar(8)         | 8            | 0           | 0       |
| FirstName  | NULL             | varchar(60)        | 60           | 0           | 0       |
| LastName   | NULL             | varchar(60)        | 60           | 0           | 0       |
+------------+------------------+--------------------+--------------+-------------+---------+

Dalam hal ini, tiga baris dikembalikan, masing-masing mewakili kolom yang akan dikembalikan oleh kueri yang saya analisis.

Anda mungkin telah memperhatikan bahwa salah satu kolom menggunakan alias tipe data yang ditentukan pengguna yang disebut kode klien . Saat Anda membuat alias tipe data yang ditentukan pengguna, Anda mendasarkannya pada tipe sistem yang ada. Hal ini tercermin dalam hasil di atas. Kita dapat melihat kode klien . itu didasarkan pada varchar(8) .

sys.dm_exec_describe_first_result_set function mengembalikan banyak kolom, jadi jangan ragu untuk menyertakan semua kolom untuk melihat apakah ada kolom lain yang mungkin berguna bagi Anda. Lihat juga Bagaimana sys.dm_exec_describe_first_result_set Berfungsi untuk penjelasan yang lebih mendetail dan lebih banyak contoh.

Anda juga dapat menggunakan sp_describe_first_result_set prosedur tersimpan sistem untuk mengembalikan informasi yang sama (menggunakan algoritma yang sama dengan sys.dm_exec_describe_first_result_set ).

Set Hasil Prosedur Tersimpan

Jika Anda ingin mendapatkan tipe data kolom yang dikembalikan oleh prosedur tersimpan, Anda dapat menggunakan sys.dm_exec_describe_first_result_set_for_object fungsi.

Fungsi ini menggunakan algoritme yang sama seperti yang sebelumnya, tetapi perbedaannya adalah fungsi ini menerima ID dari prosedur tersimpan atau pemicu sebagai argumen pertamanya (bukan kumpulan T-SQL yang sebenarnya).

Oleh karena itu, kita dapat menggunakannya seperti ini:

SELECT 
    name,
    user_type_name,
    system_type_name,
    max_length,
    [precision],
    scale
FROM sys.dm_exec_describe_first_result_set_for_object(
    OBJECT_ID('sp_BadDogs'),
    0);

Hasil:

+---------+------------------+--------------------+--------------+-------------+---------+
| name    | user_type_name   | system_type_name   | max_length   | precision   | scale   |
|---------+------------------+--------------------+--------------+-------------+---------|
| DogId   | NULL             | int                | 4            | 10          | 0       |
| DogName | NULL             | nvarchar(255)      | 510          | 0           | 0       |
| GoodDog | NULL             | bit                | 1            | 1           | 0       |
+---------+------------------+--------------------+--------------+-------------+---------+

Dalam hal ini, saya menggunakan OBJECT_ID() berfungsi untuk mengembalikan ID prosedur tersimpan, yang menyelamatkan saya dari keharusan mengetahui ID yang sebenarnya.

Lihat Cara Kerja sys.dm_exec_describe_first_result_set_for_object untuk informasi lebih lanjut dan contoh fungsi ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server - gabung dalam saat memperbarui

  2. Membagi Partisi menjadi Dua di SQL Server (T-SQL)

  3. Cara Mengubah Skema Objek (Tabel, Tampilan, Prosedur Tersimpan) di Database SQL Server - Tutorial SQL Server / TSQL Bagian 28

  4. Kembalikan Semua Kunci Asing &PERIKSA Batasan dalam Database SQL Server (Contoh T-SQL)

  5. Cara memilih tanggal tanpa waktu di SQL