Anda dapat menggunakan OBJECTPROPERTY()
fungsi di SQL Server untuk memeriksa apakah suatu objek adalah fungsi bernilai tabel atau tidak.
Untuk melakukannya, berikan ID objek sebagai argumen pertama, dan IsTableFunction
sebagai argumen kedua. Fungsi mengembalikan 1
atau 0
tergantung pada apakah itu fungsi bernilai tabel atau tidak.
Nilai kembalian 1
artinya adalah fungsi bernilai tabel, dan nilai 0
berarti bukan.
Contoh 1 – Penggunaan Dasar
Berikut contoh cepat untuk ditunjukkan.
USE Music; SELECT OBJECTPROPERTY(34099162, 'IsTableFunction') AS [IsTableFunction];
Hasil:
+-------------------+ | IsTableFunction | |-------------------| | 1 | +-------------------+
Dalam hal ini, Musik database memiliki objek dengan ID yang disediakan, dan itu adalah fungsi bernilai tabel.
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('ufn_AlbumsByGenre'), 'IsTableFunction') AS [IsTableFunction];
Hasil:
+-------------------+ | IsTableFunction | |-------------------| | 1 | +-------------------+
Ini adalah objek yang sama dari contoh sebelumnya.
Ini dia lagi dengan keluaran ID secara terpisah.
SELECT OBJECT_ID('ufn_AlbumsByGenre') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('ufn_AlbumsByGenre'), 'IsTableFunction') AS [IsTableFunction];
Hasil:
+-------------+-------------------+ | Object ID | IsTableFunction | |-------------+-------------------| | 34099162 | 1 | +-------------+-------------------+
Contoh 3 – Ketika Objek BUKAN Fungsi Bernilai Tabel
Inilah yang terjadi jika objek bukan fungsi bernilai tabel.
SELECT OBJECTPROPERTY(885578193, 'IsTableFunction') AS [IsTableFunction];
Hasil:
+-------------------+ | IsTableFunction | |-------------------| | 0 | +-------------------+
Dalam hal ini, database tidak memiliki objek dengan ID itu, tetapi objek tersebut sebenarnya adalah tabel pengguna (bukan fungsi bernilai tabel), jadi saya mendapatkan hasil negatif.
Ini dia lagi menggunakan OBJECT_ID()
.
SELECT OBJECT_ID('Artists') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Artists'), 'IsTableFunction') AS [IsTableFunction], OBJECTPROPERTY(OBJECT_ID('Artists'), 'IsUserTable') AS [IsUserTable];
Hasil:
+-------------+-------------------+---------------+ | Object ID | IsTableFunction | IsUserTable | |-------------+-------------------+---------------| | 885578193 | 0 | 1 | +-------------+-------------------+---------------+
Saya juga memeriksa untuk melihat apakah objek adalah tabel yang ditentukan pengguna, dan hasilnya positif.
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('InvalidObject'), 'IsTableFunction') AS [InvalidObject], OBJECTPROPERTY(12345678, 'IsTableFunction') AS [12345678];
Hasil:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
Dalam hal ini database tidak berisi objek dengan nama atau ID itu, jadi saya mendapatkan hasil NULL.
Anda juga akan mendapatkan NULL pada kesalahan atau jika Anda tidak memiliki izin untuk melihat objek.