Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

2 Cara Mengembalikan Semua Fungsi Buatan Pengguna dalam Database SQL Server

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');

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Node.js dan Microsoft SQL Server

  2. SQL Server:Jadikan semua UPPER case menjadi Proper Case/Title Case

  3. Cara mentransmisikan DateTime ke Time

  4. Cara Memasukkan Nilai Pada Kolom Identitas Secara Manual di Tabel SQL Server - Tutorial SQL Server / T-SQL Part 41

  5. Melewati parameter string xml ke prosedur tersimpan SQL Server