Artikel ini menyajikan dua cara untuk mengembalikan daftar fungsi yang ditentukan pengguna dalam database SQL Server.
Opsi 1 – Tampilan Skema Informasi RUTIN
Anda dapat menggunakan ROUTINES
tampilan skema informasi untuk mendapatkan daftar semua fungsi yang ditentukan pengguna dalam database.
Tampilan ini mengembalikan prosedur tersimpan serta fungsi, jadi Anda harus menambahkan WHERE
klausa untuk mempersempitnya menjadi fungsi saja.
USE Music; SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, DATA_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
Hasil:
+------------------+-------------------------+----------------+-------------+ | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | DATA_TYPE | |------------------+-------------------------+----------------+-------------| | dbo | ISOweek | FUNCTION | int | | dbo | ufn_AlbumsByGenre | FUNCTION | TABLE | | dbo | ufn_AlbumsByArtist | FUNCTION | TABLE | | dbo | ufn_AlbumsByGenre_MSTVF | FUNCTION | TABLE | +------------------+-------------------------+----------------+-------------+
Kembalikan Definisi Fungsi
Tampilan ini juga memiliki ROUTINE_DEFINITION
kolom, sehingga Anda dapat dengan mudah mengembalikan definisi setiap fungsi jika diperlukan.
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
Opsi 2 – Tampilan Katalog Sistem sys.objects
Cara lain untuk mengembalikan daftar fungsi adalah dengan menanyakan sys.objects
tampilan katalog sistem.
SELECT SCHEMA_NAME(schema_id) AS [Schema], name, type_desc FROM sys.objects WHERE type IN ('AF','FN','FS','FT','IF','TF');
Hasil:
+----------+-------------------------+----------------------------------+ | Schema | name | type_desc | |----------+-------------------------+----------------------------------| | dbo | ISOweek | SQL_SCALAR_FUNCTION | | dbo | ufn_AlbumsByGenre | SQL_INLINE_TABLE_VALUED_FUNCTION | | dbo | ufn_AlbumsByArtist | SQL_INLINE_TABLE_VALUED_FUNCTION | | dbo | ufn_AlbumsByGenre_MSTVF | SQL_TABLE_VALUED_FUNCTION | +----------+-------------------------+----------------------------------+
Di sini saya secara eksplisit menyertakan semua jenis fungsi di WHERE
ayat.
Jika Anda menjalankan kueri ad hoc tetapi Anda tidak dapat mengingat semua jenisnya, Anda dapat melakukan sesuatu seperti ini:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name, type_desc FROM sys.objects WHERE type_desc LIKE '%FUNCTION';
Atau ini:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name, type_desc FROM sys.objects WHERE RIGHT(type_desc, 8) = 'FUNCTION';
Kembalikan Definisi Fungsi
sys.objects
tampilan tidak menyertakan kolom untuk definisi objek. Jika Anda ingin mengembalikan definisi setiap fungsi, 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 IN ('AF','FN','FS','FT','IF','TF');