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

Kembalikan Informasi Kolom untuk Prosedur Tersimpan di SQL Server:sp_sproc_columns

Di SQL Server, sp_sproc_columns prosedur tersimpan sistem memungkinkan Anda mendapatkan informasi kolom untuk prosedur tersimpan tertentu atau fungsi yang ditentukan pengguna dalam sistem saat ini.

Ini setara dengan SQLProcedureColumns di ODBC.

Sintaks

Sintaksnya seperti ini:

sp_sproc_columns [[@procedure_name =] 'name'] [ , [@procedure_owner =] 'owner'] [ , [@procedure_qualifier =] 'qualifier'] [ , [@column_name =] 'column_name'] [ , [ @ODBCVer =] 'ODBCVer'] [ , [@fUsePattern =] 'fUsePattern']

Semua argumen adalah opsional. Lihat dokumentasi Microsoft untuk penjelasan rinci tentang ini.

Contoh 1 – Tentukan Tanpa Argumen

Anda dapat menjalankan prosedur tersimpan tanpa memberikan argumen apa pun. Seperti ini:

EXEC sp_sproc_columns

Atau bahkan seperti ini:

sp_sproc_columns

Ini mengembalikan semua prosedur tersimpan dan fungsi yang ditentukan pengguna dalam database saat ini. Ketika saya menjalankannya terhadap database sampel WideWorldImporters saya mendapatkan 9077 baris. Dalam contoh berikutnya saya akan mempersempitnya menjadi hanya satu.

Contoh 2 – Tentukan Semua Argumen

Begini tampilannya jika Anda menyertakan semua argumen.

EXEC sp_sproc_columns @procedure_name ='GetCityUpdates', @procedure_owner ='Integration', @procedure_qualifier ='WideWorldImporters', @column_name ='@RETURN_VALUE', @ODBCVer =2, @fUse =1; 

Hasil (menggunakan keluaran vertikal):

PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegrasiPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5DATA_TYPE | 4TYPE_NAME | intPRESISI | 10 PANJANG | 4 SKALA | 0RADIX | 10 NULLABLE | 0REMARK | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56

Dalam hal ini, saya mengembalikan info tentang nilai pengembalian GetCityUpdates prosedur tersimpan.

Contoh 3 – Tentukan Hanya Stored Procedure (atau Fungsi)

Daripada menyertakan semua argumen, Anda dapat menyertakan hanya nama prosedur tersimpan. Namun, jika Anda tidak menentukan @column_name , melakukan ini akan mengembalikan satu baris untuk setiap kolom.

Selain itu, Anda dapat membuat kode Anda lebih ringkas dengan menghilangkan nama argumen (yaitu hanya menyertakan nilainya).

EXEC sp_sproc_columns GetCityUpdates;

Hasil (menggunakan keluaran vertikal):

-[ REKAM 1 ]-------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegrasiPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @RETURN_VALUECOLUMN_TYPE | 5DATA_TYPE | 4TYPE_NAME | intPRESISI | 10 PANJANG | 4 SKALA | 0RADIX | 10 NULLABLE | 0REMARK | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | 4SQL_DATETIME_SUB | NULLCHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 0IS_NULLABLE | NOSS_DATA_TYPE | 56-[ REKAM 2 ]-------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegrasiPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @LastCutoffCOLUMN_TYPE | 1DATA_TYPE | -9TYPE_NAME | datetime2PRESISI | 27PANJANG | 54SKALA | 7RADIX | NULLNULLABLE | 1 KETERANGAN | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 1IS_NULLABLE | YESSS_DATA_TYPE | 0-[ REKAM 3 ]-------------------------PROCEDURE_QUALIFIER | WideWorldImportersPROCEDURE_OWNER | IntegrasiPROCEDURE_NAME | GetCityUpdates;1COLUMN_NAME | @NewCutoffCOLUMN_TYPE | 1DATA_TYPE | -9TYPE_NAME | datetime2PRESISI | 27PANJANG | 54SKALA | 7RADIX | NULLNULLABLE | 1 KETERANGAN | NULLCOLUMN_DEF | NULLSQL_DATA_TYPE | -9SQL_DATETIME_SUB | 3CHAR_OCTET_LENGTH | NULLORDINAL_POSITION | 2IS_NULLABLE | YESSS_DATA_TYPE | 0

Contoh 4 – Variasi Lainnya

Anda dapat memberikan variasi argumen apa pun untuk mengembalikan hanya informasi yang Anda butuhkan.

Misalnya, Anda dapat mengembalikan semua informasi dari pemilik prosedur tertentu:

EXEC sp_sproc_columns @procedure_owner ='Integrasi'

Atau Anda bisa mendapatkan info tentang semua nilai yang dikembalikan dari semua prosedur dan fungsi yang ditentukan pengguna:

EXEC sp_sproc_columns @column_name ='@RETURN_VALUE'

Tentu saja, Anda selalu dapat memasukkan kualifikasi prosedur jika diinginkan. Di SQL Server, parameter ini mewakili nama database. Di beberapa produk, ini mewakili nama server dari lingkungan database tabel.

EXEC sp_sproc_columns @column_name ='@RETURN_VALUE', @procedure_qualifier ='WideWorldImporters';

Contoh 5 – Karakter Wildcard

@fUsePattern argumen memungkinkan Anda untuk menentukan apakah menggarisbawahi atau tidak (_ ), persen (% ), dan tanda kurung siku ([ ] ) karakter ditafsirkan sebagai karakter wildcard.

Misalnya, menjalankan kode berikut akan mengembalikan semua prosedur dan fungsi yang ditentukan pengguna yang dimulai dengan Dapatkan .

EXEC sp_sproc_columns @procedure_name ='Dapatkan%', @fUsePattern =1;

Jadi dalam kasus saya, ini mengembalikan prosedur seperti GetCityUpdates, GetCustomerUpdates, GetMovementUpdates, dll.

Jika saya menonaktifkan karakter wildcard:

EXEC sp_sproc_columns @procedure_name ='Dapatkan%', @fUsePattern =0;

Saya tidak mendapatkan hasil.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan NEWID() untuk Membuat Nilai Unik di SQL Server

  2. Konversi 'datetime' menjadi 'datetime2' di SQL Server (Contoh T-SQL)

  3. Perilaku @@rowcount yang tidak terduga di dalam UDF di MS SQL 2019

  4. Nama kolom atau jumlah nilai yang diberikan tidak sesuai dengan definisi tabel

  5. Baris SQL ke Kolom