Artikel ini menyajikan 4 cara menggunakan T-SQL untuk mendapatkan definisi tampilan di SQL Server.
Definisi tampilan adalah pernyataan T-SQL aktual yang digunakan untuk membuat tampilan.
Contoh 1 – Tampilan Katalog Sistem sys.sql_modules
sys.sql_modules
tampilan katalog sistem mengembalikan baris untuk setiap objek yang merupakan modul yang ditentukan bahasa SQL di SQL Server.
Dengan kata lain, Anda dapat menggunakan tampilan ini untuk mengembalikan informasi tentang objek dari berbagai jenis, termasuk fungsi, prosedur tersimpan, dan tentu saja, tampilan.
Salah satu kolom yang dikembalikan dengan tampilan ini disebut definition
. Sesuai dengan namanya, ini mengembalikan definisi objek.
SELECT definitionFROM sys.sql_modulesWHERE object_id =object_id('Website.Customers');
Hasil:
+-------------+| definisi ||--------------|| CREATE VIEW Website.CustomersASSELECT s.CustomerID, s.CustomerName, sc.CustomerCategoryName, pp.Nama Lengkap AS PrimaryContact, ap.FullName AS AlternateContact, s.PhoneNumber, s.FaxNumber, bg.BuyingGroupName, s.Website DeliveryMedthomURL, d , c.CityName AS CityName, s.DeliveryLocation AS DeliveryLocation, s.DeliveryRun, s.RunPositionFROM Sales.Customers AS sLEFT OUTER JOIN Sales.CustomerCategories AS scON s.CustomerCategoryID =sc.CustomerCategoryIDLEFT OUTER JOIN. PrimaryContactPersonID =pp.PersonIDLEFT OUTER JOIN [Aplikasi].People SEBAGAI apON s.AlternateContactPersonID =ap.PersonIDLEFT OUTER JOIN Sales.BuyingGroups AS bgON s.BuyingGroupID =bg.BuyingGroupIDLEFT JOIN OUTER ] DeliveryMethodIDLEFT OUTER JOIN [Application].Cities AS con s.DeliveryCityID =c.CityID |+--------------+(1 baris affe ctted)
Saya menggunakan antarmuka baris perintah (CLI) dengan contoh ini, jadi hasilnya diformat dengan baik.
Jika Anda menggunakan GUI (seperti SSMS atau Azure Data Studio) untuk mengembalikan hasil dalam kisi, definisi kemungkinan akan dikembalikan dalam satu baris panjang dalam satu sel. Dalam kasus seperti itu, Anda perlu melakukan beberapa pekerjaan ekstra jika ingin ditampilkan dalam format yang lebih mudah dibaca. Atau, Anda dapat menggunakan sp_helptext
metode di bawah ini.
Contoh 2 – Prosedur Tersimpan Sistem sp_helptext
Metode lain untuk mengembalikan definisi tampilan adalah dengan menggunakan sp_helptext
prosedur tersimpan sistem. Selain mengembalikan definisi untuk tampilan, itu juga dapat mengembalikan definisi aturan yang ditentukan pengguna, default, prosedur tersimpan T-SQL yang tidak terenkripsi, fungsi Transact-SQL yang ditentukan pengguna, pemicu, kolom yang dihitung, CHECK
batasan, atau objek sistem seperti prosedur tersimpan sistem.
Seperti disebutkan dalam contoh sebelumnya, prosedur tersimpan ini menampilkan definisi tampilan di beberapa baris. Setiap baris berisi 255 karakter definisi T-SQL.
Contoh:
EXEC sp_helptext 'Situs Web.Pelanggan';
Berikut hasil yang saya dapatkan saat menggunakan GUI (Azure Data Studio):
Dan inilah yang saya dapatkan menggunakan antarmuka baris perintah saya:
+--------+| Teks ||--------|| || BUAT TAMPILAN Situs Web.Pelanggan || SEBAGAI || PILIH s.CustomerID, || s.NamaPelanggan, || sc.NamaKategoriPelanggan, || pp.Nama Lengkap AS Kontak Utama, || ap.Nama Lengkap AS AlternateContact, || s.Nomor Telepon, || s.FaxNumber, || bg.BuyingGroupName, || s.URL Situs Web, || dm.DeliveryMethodName AS DeliveryMethod, || c.Nama Kota SEBAGAI Nama Kota, || s.DeliveryLocation SEBAGAI DeliveryLocation, || s.DeliveryRun, || s.RunPosition || DARI Penjualan.Pelanggan SEBAGAI s || LEFT OUTER JOIN Sales.CustomerCategories AS sc || ON s.CustomerCategoryID =sc.CustomerCategoryID || KIRI OUTER JOIN [Aplikasi].People AS pp || DI s.PrimaryContactPersonID =pp.PersonID || KIRI OUTER JOIN [Aplikasi].Orang SEBAGAI ap || DI s.AlternateContactPersonID =ap.PersonID || KIRI OUTER GABUNG Penjualan.PembelianGroups SEBAGAI bg || DI s.BuyingGroupID =bg.BuyingGroupID || KIRI OUTER JOIN [Aplikasi].Metode Pengiriman AS dm || DI s.DeliveryMethodID =dm.DeliveryMethodID || LEFT OUTER JOIN [Aplikasi].Cities AS c || DI s.DeliveryCityID =c.CityID |+--------+
Kali ini hasilnya terlihat lebih baik saat menggunakan GUI.
Contoh 3 – Fungsi OBJECT_DEFINITION()
Cara lain untuk mengembalikan definisi tampilan adalah dengan menggunakan OBJECT_DEFINITION()
fungsi. Seperti metode sebelumnya, metode ini juga dapat mengembalikan definisi tipe objek lain.
Berikut ini contoh penggunaan fungsi ini:
SELECT OBJECT_DEFINITION( OBJECT_ID('Website.Customers') ) SEBAGAI [Definisi];
Hasil:
+-------------+| Definisi ||--------------|| CREATE VIEW Website.CustomersASSELECT s.CustomerID, s.CustomerName, sc.CustomerCategoryName, pp.Nama Lengkap AS PrimaryContact, ap.FullName AS AlternateContact, s.PhoneNumber, s.FaxNumber, bg.BuyingGroupName, s.Website DeliveryMedthomURL, d , c.CityName AS CityName, s.DeliveryLocation AS DeliveryLocation, s.DeliveryRun, s.RunPositionFROM Sales.Customers AS sLEFT OUTER JOIN Sales.CustomerCategories AS scON s.CustomerCategoryID =sc.CustomerCategoryIDLEFT OUTER JOIN. PrimaryContactPersonID =pp.PersonIDLEFT OUTER JOIN [Aplikasi].People SEBAGAI apON s.AlternateContactPersonID =ap.PersonIDLEFT OUTER JOIN Sales.BuyingGroups AS bgON s.BuyingGroupID =bg.BuyingGroupIDLEFT JOIN OUTER ] DeliveryMethodIDLEFT OUTER JOIN [Application].Cities AS con s.DeliveryCityID =c.CityID |+--------------+
Kali ini lebih mudah untuk membaca di CLI saya daripada grid GUI saya.
Contoh 4 – Tampilan Skema Informasi Sistem VIEWS
VIEWS
tampilan skema informasi sistem juga dapat mengembalikan definisi tampilan. Satu perbedaan antara metode ini dan yang sebelumnya adalah, VIEWS
tampilan skema informasi terbatas pada tampilan saja (sesuai namanya).
Ini mengembalikan sekelompok kolom, salah satunya adalah definisi tampilan. Oleh karena itu kami dapat memberi nama kolom itu untuk mengembalikan definisi saja:
SELECT VIEW_DEFINITIONFROM INFORMATION_SCHEMA.VIEWSWHERE TABLE_NAME ='Pelanggan';
Hasil:
+-------------------+| LIHAT_DEFINISI ||-------------------|| CREATE VIEW Website.CustomersASSELECT s.CustomerID, s.CustomerName, sc.CustomerCategoryName, pp.Nama Lengkap AS PrimaryContact, ap.FullName AS AlternateContact, s.PhoneNumber, s.FaxNumber, bg.BuyingGroupName, s.Website DeliveryMedthomURL, d , c.CityName AS CityName, s.DeliveryLocation AS DeliveryLocation, s.DeliveryRun, s.RunPositionFROM Sales.Customers AS sLEFT OUTER JOIN Sales.CustomerCategories AS scON s.CustomerCategoryID =sc.CustomerCategoryIDLEFT OUTER JOIN. PrimaryContactPersonID =pp.PersonIDLEFT OUTER JOIN [Aplikasi].People SEBAGAI apON s.AlternateContactPersonID =ap.PersonIDLEFT OUTER JOIN Sales.BuyingGroups AS bgON s.BuyingGroupID =bg.BuyingGroupIDLEFT JOIN OUTER ] DeliveryMethodIDLEFT OUTER JOIN [Aplikasi].Cities SEBAGAI con s.DeliveryCityID =c.CityID |+-------------------+Perhatikan bahwa
VIEW_DEFINITION
kolom dalam tampilan sistem ini memiliki panjang maksimum nvarchar(4000) . Untuk definisi tampilan yang lebih besar dari ini, Anda dapat menggunakanOBJECT_DEFINITION()
fungsi pada contoh sebelumnya.Nilai kembalian
OBJECT_DEFINITION()
fungsinya adalah nvarchar(maks) , sehingga tidak memiliki batasan karakterVIEW_DEFINITION
kolom (seperti yang disebutkan, adalah nvarchar(4000) ).