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

Използвайте OBJECTPROPERTY(), за да определите дали даден обект е изглед в SQL Server

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

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

Следователно можете да подадете идентификатора на обекта като първи аргумент и IsView като второто и функцията ще върне или 1 или 0 в зависимост от това дали е изглед или не.

Връщана стойност на 1 означава, че е изглед и стойност на 0 означава, че не е.

Пример 1 – Основна употреба

Ето един бърз пример за демонстрация.

USE Music;
SELECT OBJECTPROPERTY(1525580473, 'IsView') AS [IsView];

Резултат:

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

В този случай Музика базата данни има обект с предоставения идентификатор и това е изглед.

Пример 2 – Получаване на идентификатора на обекта

Ако знаете името на обекта, но не и неговия идентификатор, можете да използвате OBJECT_ID() функция за извличане на идентификатора въз основа на неговото име.

Пример:

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

Резултат:

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

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

Ето го отново с отделно извеждане на ID.

SELECT 
  OBJECT_ID('RockAlbums') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];

Резултат:

+-------------+----------+
| Object ID   | IsView   |
|-------------+----------|
| 1525580473  | 1        |
+-------------+----------+

Пример 3 – Когато обектът НЕ е изглед

Ето какво се случва, когато обектът не е изглед.

SELECT OBJECTPROPERTY(885578193, 'IsView') AS [IsView];

Резултат:

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

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

Тук отново се използва OBJECT_ID() .

SELECT 
  OBJECT_ID('Artists') AS [Object ID],
  OBJECTPROPERTY(OBJECT_ID('Artists'), 'IsView') AS [IsView];

Резултат:

+-------------+----------+
| Object ID   | IsView   |
|-------------+----------|
| 885578193   | 0        |
+-------------+----------+

Пример 4 – Обектът не съществува

SQL Server приема, че идентификаторът на обекта е в текущия контекст на базата данни. Ако подадете идентификатор на обект от друга база данни, или ще получите резултат NULL, или ще получите неправилни резултати.

SELECT 
  OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsView') AS [NonExistentObject],
  OBJECTPROPERTY(11111111, 'IsView') AS [11111111];

Резултат:

+---------------------+------------+
| NonExistentObject   | 11111111   |
|---------------------+------------|
| NULL                | NULL       |
+---------------------+------------+

В този случай базата данни не съдържа обекти с това име или ID и така получавам резултат NULL.

Освен това ще получите NULL при грешка или ако нямате разрешение да видите обекта.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как SHOWPLAN_XML работи в SQL Server

  2. SQL Server PIVOT може би?

  3. Инсталирайте SQL Server 2019 на Mac

  4. Как да посочите съпоставянето в заявка в SQL Server (T-SQL)

  5. Отстраняване на проблеми с репликацията на SQL сървър