Artikel ini menyajikan dua cara untuk mengembalikan daftar prosedur tersimpan di database SQL Server.
Opsi 1 – Tampilan Skema Informasi RUTIN
Anda dapat menggunakan ROUTINES
tampilan skema informasi untuk mendapatkan daftar semua prosedur tersimpan yang ditentukan pengguna dalam database.
USE Music; SELECT ROUTINE_SCHEMA, ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
Hasil:
+------------------+----------------------+ | ROUTINE_SCHEMA | ROUTINE_NAME | |------------------+----------------------| | dbo | spAlbumsFromArtist | | dbo | uspGetAlbumsByArtist | +------------------+----------------------+
Kembalikan Definisi Prosedur
INFORMATION_SCHEMA.ROUTINES
tampilan juga memiliki ROUTINE_DEFINITION
kolom, sehingga Anda dapat dengan mudah mengembalikan definisi setiap prosedur tersimpan jika diperlukan.
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
Opsi 2 – Tampilan Katalog Sistem sys.objects
Cara lain untuk mengembalikan daftar prosedur tersimpan adalah dengan menanyakan sys.objects
tampilan katalog sistem.
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type = 'P';
Hasil:
+----------+----------------------+ | Schema | name | |----------+----------------------| | dbo | spAlbumsFromArtist | | dbo | uspGetAlbumsByArtist | +----------+----------------------+
Jenis P
mungkin untuk "Prosedur".
Cara lain untuk melakukannya adalah memfilter menurut type_desc
kolom:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name FROM sys.objects WHERE type_desc = 'SQL_STORED_PROCEDURE';
Kembalikan Definisi Prosedur
sys.objects
tampilan tidak menyertakan kolom untuk definisi objek. Jika Anda ingin mengembalikan definisi setiap prosedur tersimpan, Anda dapat menggabungkannya dengan sys.sql_modules
tampilan sistem.
Contoh:
SELECT definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE type = 'P';
Opsi 3 – Tampilan Katalog sys.procedures
sys.procedures
katalog prosedur tersimpan berisi baris untuk setiap objek yang merupakan prosedur dari beberapa jenis, dengan sys.objects.type =P, X, RF, dan PC.
Menjalankan kode berikut akan mengembalikan semua prosedur tersimpan yang dimiliki pengguna atau yang telah diberikan izin kepada pengguna.
SELECT SCHEMA_NAME(schema_id) AS [Schema], Name FROM sys.procedures;
Hasil:
+----------+----------------------+ | Schema | Name | |----------+----------------------| | dbo | spAlbumsFromArtist | | dbo | uspGetAlbumsByArtist | +----------+----------------------+
Tampilan ini mewarisi type
kolom dari sys.objects
sehingga Anda dapat memfilter hasil berdasarkan jenis prosedur jika diinginkan.
SELECT SCHEMA_NAME(schema_id), name FROM sys.procedures WHERE type = 'P';
Dalam kasus saya, saya mendapatkan hasil yang sama karena kedua prosedur saya bertipe “P”.
Jika Anda bertanya-tanya, inilah arti dari setiap jenis.
- P
- Prosedur Tersimpan SQL
- X
- Prosedur tersimpan yang diperluas
- RF
- Prosedur-filter-replikasi
- PC
- Prosedur tersimpan perakitan (CLR)
Kembalikan Definisi Prosedur
sys.procedures
tampilan tidak menyertakan kolom untuk definisi objek. Seperti metode sebelumnya, jika Anda ingin mengembalikan definisi setiap prosedur tersimpan, Anda dapat menggabungkannya dengan sys.sql_modules
tampilan sistem.
Contoh:
SELECT definition FROM sys.procedures p INNER JOIN sys.sql_modules m ON p.object_id = m.object_id;