Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Проверете дали даден обект е таблица, изглед или съхранена процедура в SQL Server с помощта на функцията OBJECTPROPERTY()

В SQL Server можете да използвате OBJECTPROPERTY() функция за проверка на типа на обекта. По-конкретно, можете да проверите дали е или не е конкретен тип.

Например IsTable свойството ви казва дали това е таблица или не, IsView свойството ви казва дали това е изглед и т.н.

Тази статия предлага няколко основни примера, които проверяват дали даден обект е таблица, изглед, съхранена процедура или функция с стойност на таблица.

Пример 1 – Проверка за таблица

Ето пример, който проверява дали даден обект е таблица.

USE Music; 
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsTable') AS [IsTable];

Резултат:

+-----------+
| IsTable   |
|-----------|
| 1         |
+-----------+

Тук името на обекта е Artists и схемата е dbo .

В този случай резултатът е 1 , което показва, че обектът всъщност е таблица.

Пример 2 – Проверка за изглед

Ето пример, който проверява дали даден обект е изглед.

USE Music; 
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsView') AS [IsView];

Резултат:

+----------+
| IsView   |
|----------|
| 0        |
+----------+

В този случай проверявам същия обект от предишния пример и така вече знаем, че това не е изглед. Следователно резултатът е 0 , което показва, че това не е изглед.

Ето още един пример, този път обектът всъщност е изглед:

SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.RockAlbums'), 'IsView') AS [IsView];

Резултат:

+----------+
| IsView   |
|----------|
| 1        |
+----------+

Имайте предвид, че премахнах USE Music; част, защото вече съм в тази база данни. OBJECTPROPERTY() проверява само обекти с обхват на схема в текущата база данни.

Пример 3 – Условно изявление

Можем да направим концепцията крачка напред и да включим предишните примери в IF изявление. По този начин можем да изпълним един израз, за ​​да разберем какъв тип е обектът.

По-долу са дадени основни примери, които просто извеждат типа обект.

Таблица

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.';

Резултат:

Table

В този случай обектът е таблица.

Ето още примери, които използват същия израз, но с различни типове обекти.

Преглед

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.';

Резултат:

View

Запазена процедура

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.';

Резултат:

Stored Procedure

Функция с таблична стойност

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.';

Резултат:

Table-valued Function

Можете да добавите повече типове към изявлението, за да го направите по-полезно. Изброих аргументите, които OBJECTPROPERTY() приема на тази страница. Все пак не всички от тях са обекти – има много различни свойства, за които можете да проверите.

За пълно обяснение на всяко свойство вижте документацията на 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. Как да извадите нулеви DateTime от базата данни

  2. Вземете началната и крайната дата на седмицата от номера на седмицата

  3. SQL Server 2000 - Свързан сървър

  4. С ПРОВЕРКА НА ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ, последвано от ПРОВЕРКА НА ОГРАНИЧЕНИЕ спрямо ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ

  5. Как да съхранявате пароли в базата данни сигурно?