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;