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

Cari Tahu apakah Objek adalah Tabel Buatan Pengguna di SQL Server dengan OBJECTPROPERTY()

Anda dapat menggunakan OBJECTPROPERTY() fungsi di SQL Server untuk memeriksa apakah suatu objek adalah tabel yang ditentukan pengguna atau tidak.

Untuk melakukannya, berikan ID objek sebagai argumen pertama, dan IsUserTable sebagai argumen kedua. Fungsi mengembalikan 1 atau 0 tergantung pada apakah itu tabel yang ditentukan pengguna atau tidak.

Nilai kembalian 1 artinya adalah tabel yang ditentukan pengguna, dan nilai 0 berarti bukan.

Contoh 1 – Penggunaan Dasar

Berikut contoh cepat untuk ditunjukkan.

GUNAKAN WideWorldImportersDW;SELECT OBJECTPROPERTY(1013578649, 'IsUserTable') SEBAGAI [IsUserTable];

Hasil:

+---------------+| IsUserTable ||---------------|| 1 |+---------------+

Dalam hal ini, WideWorldImportersDW database memiliki objek dengan ID yang disediakan, dan itu adalah tabel yang ditentukan pengguna.

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('Dimension.City'), 'IsUserTable') AS [IsUserTable];

Hasil:

+---------------+| IsUserTable ||---------------|| 1 |+---------------+

Ini adalah objek yang sama dari contoh sebelumnya.

Ini dia lagi dengan keluaran ID secara terpisah.

SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsUserTable') AS [IsUserTable];

Hasil:

+-------------+---------------+| ID Objek | IsUserTable ||-------------+---------------|| 1013578649 | 1 |+-------------+---------------+

Contoh 3 – Ketika Objek BUKAN Tabel Buatan Pengguna

Inilah yang terjadi jika objek bukan tabel pengguna.

PILIH OBJECTPROPERTY(402100473, 'IsUserTable') SEBAGAI [IsUserTable];

Hasil:

+---------------+| IsUserTable ||---------------|| 0 |+---------------+

Dalam hal ini, database tidak memiliki objek dengan ID itu, tetapi objek tersebut sebenarnya adalah prosedur tersimpan (bukan tabel yang ditentukan pengguna), jadi saya mendapatkan hasil negatif.

Ini dia lagi menggunakan OBJECT_ID() .

SELECT OBJECT_ID('Sequences.ReseedAllSequences') SEBAGAI [ID Objek], OBJECTPROPERTY(OBJECT_ID('Sequences.ReseedAllSequences'), 'IsUserTable') SEBAGAI [IsUserTable], OBJECTPROPERTY('Seedquence_ID('Seedquence_ID'. IsProcedure') SEBAGAI [IsProcedure];

Hasil:

+-------------+---------------+---------------+ | ID Objek | IsUserTable | IsProcedure ||-------------+---------------+---------------|| 402100473 | 0 | 1 |+-------------+---------------+---------------+ 

Saya juga memeriksa untuk melihat apakah objek adalah prosedur tersimpan, 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'), 'IsUserTable') AS [InvalidObject], OBJECTPROPERTY(12345678, 'IsUserTable') AS [12345678];

Hasil:

+-----------------+------------+| Objek Tidak Valid | 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengonversi kolom stempel waktu SQL Server ke format datetime

  2. RODBC odbcDriverConnect() Kesalahan Koneksi

  3. Apa itu Operator Logis ATAU di SQL Server - Tutorial SQL Server / TSQL Bagian 119

  4. Cara Mencegah Serangan Injeksi SQL dengan Aman

  5. Cara Mengurangi Ukuran File Data di SQL Server (T-SQL)