Di SQL Server, Anda dapat menggunakan ROUTINES
Transact-SQL tampilan skema informasi sistem untuk mengembalikan daftar prosedur dan fungsi tersimpan dalam database saat ini.
Lebih khusus lagi, ini mengembalikan daftar semua prosedur dan fungsi tersimpan yang dapat diakses oleh pengguna saat ini di database saat ini.
Anda juga dapat menggunakan ROUTINES
hanya untuk mengembalikan informasi tentang prosedur atau fungsi tertentu jika diperlukan.
Untuk menggunakan tampilan ini, gunakan nama lengkap INFORMATION_SCHEMA.ROUTINES
.
Contoh 1 – Mengembalikan Semua Rutinitas
Berikut adalah contoh cepat yang mengembalikan semua prosedur dan fungsi tersimpan dalam database saat ini (yang dapat diakses oleh pengguna saat ini).
USE Music; SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES;
Hasil:
Changed database context to 'Music'. +-------------------+------------------+----------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+----------------------+----------------| | Music | dbo | ISOweek | FUNCTION | | Music | dbo | ufn_AlbumsByGenre | FUNCTION | | Music | dbo | spAlbumsFromArtist | PROCEDURE | | Music | dbo | uspGetAlbumsByArtist | PROCEDURE | +-------------------+------------------+----------------------+----------------+ (4 rows affected)
Hasil ini menunjukkan kepada saya bahwa ada dua fungsi dan dua prosedur yang dapat saya akses di database "Musik".
Tampilan mengembalikan cukup banyak kolom, jadi dalam contoh ini saya mempersempit kolom menjadi hanya empat.
Contoh 2 – Temukan Rutinitas Tertentu
Anda juga dapat mempersempit hasil ke prosedur atau fungsi tertentu jika Anda mau.
Dalam contoh ini saya menyertakan semua kolom. Saya menggunakan output vertikal sehingga Anda tidak dipaksa untuk menggulir secara horizontal.
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'uspGetAlbumsByArtist';
Hasil (menggunakan keluaran vertikal):
-[ RECORD 1 ]------------------------- SPECIFIC_CATALOG | Music SPECIFIC_SCHEMA | dbo SPECIFIC_NAME | uspGetAlbumsByArtist ROUTINE_CATALOG | Music ROUTINE_SCHEMA | dbo ROUTINE_NAME | uspGetAlbumsByArtist ROUTINE_TYPE | PROCEDURE MODULE_CATALOG | NULL MODULE_SCHEMA | NULL MODULE_NAME | NULL UDT_CATALOG | NULL UDT_SCHEMA | NULL UDT_NAME | NULL DATA_TYPE | NULL CHARACTER_MAXIMUM_LENGTH | NULL CHARACTER_OCTET_LENGTH | NULL COLLATION_CATALOG | NULL COLLATION_SCHEMA | NULL COLLATION_NAME | NULL CHARACTER_SET_CATALOG | NULL CHARACTER_SET_SCHEMA | NULL CHARACTER_SET_NAME | NULL NUMERIC_PRECISION | NULL NUMERIC_PRECISION_RADIX | NULL NUMERIC_SCALE | NULL DATETIME_PRECISION | NULL INTERVAL_TYPE | NULL INTERVAL_PRECISION | NULL TYPE_UDT_CATALOG | NULL TYPE_UDT_SCHEMA | NULL TYPE_UDT_NAME | NULL SCOPE_CATALOG | NULL SCOPE_SCHEMA | NULL SCOPE_NAME | NULL MAXIMUM_CARDINALITY | NULL DTD_IDENTIFIER | NULL ROUTINE_BODY | SQL ROUTINE_DEFINITION | CREATE PROCEDURE [dbo].[uspGetAlbumsByArtist] @ArtistId int AS SELECT AlbumName FROM [fdec67e6a28d].[Music].[dbo].[Albums] WHERE ArtistId = @ArtistId EXTERNAL_NAME | NULL EXTERNAL_LANGUAGE | NULL PARAMETER_STYLE | NULL IS_DETERMINISTIC | NO SQL_DATA_ACCESS | MODIFIES IS_NULL_CALL | NULL SQL_PATH | NULL SCHEMA_LEVEL_ROUTINE | YES MAX_DYNAMIC_RESULT_SETS | -1 IS_USER_DEFINED_CAST | NO IS_IMPLICITLY_INVOCABLE | NO CREATED | 2019-10-26 01:11:30.677 LAST_ALTERED | 2019-10-26 03:50:42.527 (1 row affected)
Anda akan melihat bahwa banyak kolom memiliki nilai nol. Dokumentasi Microsoft untuk tampilan ini menyatakan bahwa banyak dari kolom ini selalu mengembalikan NULL
. Itu juga menyatakan bahwa beberapa di antaranya dicadangkan untuk penggunaan di masa mendatang.
Contoh 3 – Hanya Prosedur Pengembalian
Anda dapat menggunakan WHERE
klausa untuk memfilter hasil ke prosedur tersimpan atau fungsi saja.
Contoh ini mengembalikan prosedur tersimpan saja.
SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
Hasil:
+-------------------+------------------+----------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+----------------------+----------------| | Music | dbo | spAlbumsFromArtist | PROCEDURE | | Music | dbo | uspGetAlbumsByArtist | PROCEDURE | +-------------------+------------------+----------------------+----------------+ (2 rows affected)
Contoh 4 – Kembalikan Fungsi Saja
Contoh ini mengembalikan fungsi saja.
SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
Hasil:
+-------------------+------------------+-------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+-------------------+----------------| | Music | dbo | ISOweek | FUNCTION | | Music | dbo | ufn_AlbumsByGenre | FUNCTION | +-------------------+------------------+-------------------+----------------+ (2 rows affected)