Di SQL Server Anda dapat menggunakan OBJECTPROPERTY()
berfungsi untuk memeriksa jenis objek. Lebih khusus lagi, Anda dapat memeriksa apakah itu tipe tertentu atau bukan.
Misalnya, IsTable
properti memberi tahu Anda apakah itu tabel atau bukan, IsView
properti memberi tahu Anda apakah itu tampilan atau bukan.
Artikel ini menawarkan beberapa contoh dasar yang memeriksa apakah suatu objek adalah tabel, tampilan, prosedur tersimpan, atau fungsi bernilai tabel.
Contoh 1 – Periksa Tabel
Berikut adalah contoh yang memeriksa apakah suatu objek adalah tabel.
USE Music; SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsTable') AS [IsTable];
Hasil:
+-----------+ | IsTable | |-----------| | 1 | +-----------+
Di sini, nama objeknya adalah Artists
dan skemanya adalah dbo
.
Dalam hal ini, hasilnya adalah 1
, yang menunjukkan bahwa objek sebenarnya adalah sebuah tabel.
Contoh 2 – Periksa Tampilan
Berikut adalah contoh yang memeriksa apakah suatu objek adalah tampilan.
USE Music; SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsView') AS [IsView];
Hasil:
+----------+ | IsView | |----------| | 0 | +----------+
Dalam hal ini, saya memeriksa objek yang sama dari contoh sebelumnya, jadi kita sudah tahu itu bukan tampilan. Oleh karena itu, hasilnya adalah 0
, yang menunjukkan bahwa itu bukan tampilan.
Ini contoh lain, kali ini objek sebenarnya adalah tampilan:
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.RockAlbums'), 'IsView') AS [IsView];
Hasil:
+----------+ | IsView | |----------| | 1 | +----------+
Perhatikan bahwa saya menghapus USE Music;
bagian, karena saya sudah ada di database itu. OBJECTPROPERTY()
hanya memeriksa objek cakupan skema di database saat ini.
Contoh 3 – Pernyataan Bersyarat
Kita dapat mengambil konsep selangkah lebih maju, dan menggabungkan contoh sebelumnya ke dalam IF
penyataan. Dengan begitu kita dapat menjalankan satu pernyataan untuk mengetahui jenis objeknya.
Di bawah ini adalah contoh dasar yang hanya menampilkan tipe objek.
Tabel
DECLARE @TheObject varchar(255) = 'dbo.Artists'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Hasil:
Table
Dalam hal ini, objeknya adalah tabel.
Berikut adalah lebih banyak contoh yang menggunakan pernyataan yang sama, tetapi dengan tipe objek yang berbeda.
Lihat
DECLARE @TheObject varchar(255) = 'dbo.RockAlbums'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Hasil:
View
Prosedur Tersimpan
DECLARE @TheObject varchar(255) = 'dbo.uspGetAlbumsByArtist'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Hasil:
Stored Procedure
Fungsi Bernilai Tabel
DECLARE @TheObject varchar(255) = 'dbo.ufn_AlbumsByGenre1'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Hasil:
Table-valued Function
Anda dapat menambahkan lebih banyak jenis ke pernyataan untuk membuatnya lebih berguna. Saya telah membuat daftar argumen yang OBJECTPROPERTY()
menerima di halaman ini. Namun tidak semuanya adalah tipe objek – ada banyak properti berbeda yang dapat Anda periksa.
Untuk penjelasan lengkap setiap properti, lihat dokumentasi Microsoft.