Di SQL Server Anda dapat menggunakan OBJECTPROPERTY()
berfungsi untuk mengetahui apakah suatu objek merupakan stored procedure atau tidak.
Fungsi ini menerima dua parameter:ID objek, dan properti yang Anda periksa.
Oleh karena itu, Anda dapat meneruskan ID objek sebagai argumen pertama, dan IsProcedure
sebagai yang kedua, dan fungsinya akan mengembalikan 1
atau 0
tergantung pada apakah itu prosedur tersimpan atau tidak.
Nilai kembalian 1
artinya adalah prosedur tersimpan, dan nilai 0
berarti bukan.
Contoh 1 – Penggunaan Dasar
Berikut contoh cepat untuk ditunjukkan.
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(466100701, 'IsProcedure') AS [IsProcedure];
Hasil:
+---------------+ | IsProcedure | |---------------| | 1 | +---------------+
Dalam hal ini, Musik database memiliki objek dengan ID yang diberikan, dan itu sebenarnya adalah prosedur tersimpan.
Contoh 2 – Mendapatkan ID Objek
Jika Anda mengetahui nama objek, tetapi tidak mengetahui ID-nya, Anda dapat menggunakan OBJECT_ID()
berfungsi untuk mengambil ID berdasarkan namanya.
Contoh:
SELECT OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];
Hasil:
+---------------+ | IsProcedure | |---------------| | 1 | +---------------+
Dalam hal ini saya memeriksa objek yang sama dari contoh sebelumnya.
Ini dia lagi dengan keluaran ID secara terpisah.
SELECT OBJECT_ID('Integration.GetLineageKey') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];
Hasil:
+-------------+---------------+ | Object ID | IsProcedure | |-------------+---------------| | 466100701 | 1 | +-------------+---------------+
Contoh 3 – Ketika Objek BUKAN Prosedur Tersimpan
Inilah yang terjadi jika objek bukan merupakan prosedur tersimpan.
SELECT OBJECTPROPERTY(1013578649, 'IsProcedure') AS [IsProcedure];
Hasil:
+---------------+ | IsProcedure | |---------------| | 0 | +---------------+
Dalam hal ini, database tidak sebenarnya memiliki objek dengan ID itu, tetapi objek itu sebenarnya adalah tabel, jadi saya mendapatkan hasil negatif.
Ini dia lagi menggunakan OBJECT_ID()
.
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsProcedure') AS [IsProcedure];
Hasil:
+-------------+---------------+ | Object ID | IsProcedure | |-------------+---------------| | 1013578649 | 0 | +-------------+---------------+
Contoh 4 – Objek Tidak Ada
SQL Server mengasumsikan bahwa ID objek dalam konteks database saat ini. Jika Anda memasukkan ID objek dari database yang berbeda, Anda akan mendapatkan hasil NULL atau Anda akan mendapatkan hasil yang salah.
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsProcedure') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsProcedure') AS [11111111];
Hasil:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
Dalam hal ini database tidak berisi objek dengan nama atau ID tersebut.