Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

4 Cara Mendapatkan Definisi Stored Procedure menggunakan Transact-SQL

Artikel ini menyajikan 4 cara menggunakan T-SQL untuk mendapatkan definisi prosedur tersimpan di SQL Server.

Definisinya adalah pernyataan T-SQL aktual yang digunakan untuk membuat prosedur tersimpan.

Tiga metode di sini sama persis dengan yang digunakan untuk mengembalikan definisi tampilan (kecuali di sini, metode tersebut digunakan pada prosedur tersimpan, bukan tampilan).

Contoh 1 – Tampilan Katalog Sistem sys.sql_modules

sys.sql_modules tampilan katalog sistem mengembalikan baris untuk setiap objek yang merupakan modul yang ditentukan bahasa SQL di SQL Server.

Dengan kata lain, Anda dapat menggunakan tampilan ini untuk mengembalikan informasi tentang objek dari berbagai jenis, termasuk fungsi, tampilan, dan tentu saja, prosedur tersimpan.

Salah satu kolom yang dikembalikan dengan tampilan ini disebut definition . Sesuai dengan namanya, ini mengembalikan definisi objek.

SELECT definition
FROM sys.sql_modules
WHERE object_id = object_id('uspGetAlbumsByArtist');

Hasil:

+--------------+
| definition   |
|--------------|
| CREATE PROCEDURE [dbo].[uspGetAlbumsByArtist] @ArtistId int AS
SELECT AlbumName
FROM [dbo].[Albums]
WHERE ArtistId = @ArtistId
              |
+--------------+

Saya menggunakan antarmuka baris perintah (CLI) dengan contoh ini, jadi hasilnya diformat dengan baik.

Jika Anda menggunakan GUI (seperti SSMS atau Azure Data Studio) untuk mengembalikan hasil dalam kisi, definisi kemungkinan akan dikembalikan dalam satu baris panjang dalam satu sel. Dalam kasus seperti itu, Anda perlu melakukan beberapa pekerjaan ekstra jika ingin ditampilkan dalam format yang lebih mudah dibaca. Atau, Anda dapat menggunakan sp_helptext metode di bawah ini.

Contoh 2 – Prosedur Tersimpan Sistem sp_helptext

Metode lain untuk mengembalikan definisi prosedur tersimpan adalah dengan menggunakan sp_helptext prosedur tersimpan sistem. Selain dapat mengembalikan definisi untuk prosedur tersimpan (tidak terenkripsi), itu juga dapat mengembalikan definisi aturan yang ditentukan pengguna, default, tampilan, fungsi Transact-SQL yang ditentukan pengguna, pemicu, kolom yang dihitung, CHECK batasan, atau objek sistem seperti prosedur tersimpan sistem.

Prosedur tersimpan ini menampilkan definisi di beberapa baris. Setiap baris berisi 255 karakter definisi T-SQL.

Contoh:

EXEC sp_helptext 'uspGetAlbumsByArtist';

Berikut hasil yang saya dapatkan saat menggunakan GUI (Azure Data Studio):

Dan inilah yang saya dapatkan menggunakan antarmuka baris perintah saya:

+--------+
| Text   |
|--------|
| CREATE PROCEDURE [dbo].[uspGetAlbumsByArtist] @ArtistId int AS
        |
| SELECT AlbumName
        |
| FROM [dbo].[Albums]
        |
| WHERE ArtistId = @ArtistId
        |
+--------+

Contoh 3 – Fungsi OBJECT_DEFINITION()

Cara lain untuk mengembalikan definisi prosedur tersimpan adalah dengan menggunakan OBJECT_DEFINITION() fungsi. Seperti metode sebelumnya, metode ini juga dapat mengembalikan definisi tipe objek lain.

Berikut ini contoh penggunaan fungsi ini:

SELECT OBJECT_DEFINITION(
        OBJECT_ID('uspGetAlbumsByArtist')
    ) AS [Definition];

Hasil:

+--------------+
| Definition   |
|--------------|
| CREATE PROCEDURE [dbo].[uspGetAlbumsByArtist] @ArtistId int AS
SELECT AlbumName
FROM [dbo].[Albums]
WHERE ArtistId = @ArtistId
              |
+--------------+

Contoh 4 – Tampilan Skema Informasi Sistem RUTIN

ROUTINES tampilan skema informasi sistem juga dapat mengembalikan definisi prosedur tersimpan (dan juga fungsi).

Tampilan ini mengembalikan banyak kolom, salah satunya adalah definisi objek. Oleh karena itu kami dapat memberi nama kolom itu untuk mengembalikan definisi saja:

SELECT ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME = 'uspGetAlbumsByArtist';

Hasil:

+----------------------+
| ROUTINE_DEFINITION   |
|----------------------|
| CREATE PROCEDURE [dbo].[uspGetAlbumsByArtist] @ArtistId int AS
SELECT AlbumName
FROM [dbo].[Albums]
WHERE ArtistId = @ArtistId
                      |
+----------------------+

Perhatikan bahwa ROUTINE_DEFINITION kolom dalam tampilan sistem ini memiliki panjang maksimum nvarchar(4000) . Untuk definisi yang lebih besar dari ini, Anda dapat menggunakan OBJECT_DEFINITION() fungsi atau sys.sql_modules lihat pada contoh sebelumnya. Keduanya menggunakan nvarchar(max) untuk definisi, sehingga mereka tidak memiliki batasan karakter ROUTINE_DEFINITION kolom (seperti yang disebutkan, adalah nvarchar(4000) ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Model Data Perpustakaan

  2. Memformat Data dalam Visualisasi Desktop Power BI

  3. Apa yang Dilakukan Perancang Basis Data?

  4. Menggabungkan File Data dengan Statistica, Bagian 2

  5. Kunci Utama Dalam SQL:Semua yang Perlu Anda Ketahui Tentang Operasi Kunci Utama