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

Periksa apakah Objek adalah Tabel, Tampilan, atau Prosedur Tersimpan di SQL Server menggunakan Fungsi OBJECTPROPERTY()

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Statistik Penggunaan Indeks SQL Server

  2. Cara Menggunakan Wizard Impor/Ekspor Di SQL Server - Tutorial SQL Server / TSQL Bagian 104

  3. Menghubungkan ke database SQL Server lokal menggunakan C#

  4. Apakah Penyedia Microsoft OLE DB untuk SQL Server mendukung TLS 1.2?

  5. Memahami Pernyataan SQL Server ALTER TABLE ADD COLUMN