Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Użyj OBJECTPROPERTY(), aby określić, czy obiekt jest widokiem w SQL Server

Możesz użyć OBJECTPROPERTY() funkcji w SQL Server, aby dowiedzieć się, czy obiekt jest widokiem.

Ta funkcja akceptuje dwa parametry:identyfikator obiektu i właściwość, dla której ją sprawdzasz.

Dlatego możesz przekazać identyfikator obiektu jako pierwszy argument, a IsView jako drugi, a funkcja zwróci albo 1 lub 0 w zależności od tego, czy jest to widok.

Zwracana wartość 1 oznacza, że ​​jest widok i wartość 0 oznacza, że ​​tak nie jest.

Przykład 1 – Podstawowe użycie

Oto krótki przykład do zademonstrowania.

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

Wynik:

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

W tym przypadku Muzyka baza danych zawiera obiekt z podanym identyfikatorem i jest to widok.

Przykład 2 – Uzyskanie identyfikatora obiektu

Jeśli znasz nazwę obiektu, ale nie znasz jego identyfikatora, możesz użyć OBJECT_ID() funkcja do pobrania identyfikatora na podstawie jego nazwy.

Przykład:

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

Wynik:

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

W tym przypadku sprawdziłem ten sam obiekt z poprzedniego przykładu.

Tutaj znowu jest z wyjściem ID oddzielnie.

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

Wynik:

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

Przykład 3 – gdy obiekt NIE jest widokiem

Oto, co się dzieje, gdy obiekt nie jest widokiem.

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

Wynik:

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

W takim przypadku baza danych tak w rzeczywistości mam obiekt o tym identyfikatorze, ale obiekt jest w rzeczywistości tabelą, więc otrzymuję wynik ujemny.

Tutaj znowu używamy OBJECT_ID() .

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

Wynik:

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

Przykład 4 – Obiekt nie istnieje

SQL Server zakłada, że ​​identyfikator obiektu znajduje się w bieżącym kontekście bazy danych. Jeśli przekażesz identyfikator obiektu z innej bazy danych, otrzymasz wynik NULL lub otrzymasz nieprawidłowe wyniki.

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

Wynik:

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

W tym przypadku baza danych nie zawiera obiektów o tej nazwie lub identyfikatorze, więc otrzymuję wynik NULL.

Otrzymasz również NULL w przypadku błędu lub jeśli nie masz uprawnień do przeglądania obiektu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Filtruj według klauzuli wyjściowej sql

  2. T-SQL — aliasowanie przy użyciu =kontra as

  3. Jak pisać znaki UTF-8 za pomocą wstawiania zbiorczego w programie SQL Server?

  4. Jak uzyskać listę kolumn z unikalnymi ograniczeniami w bazie danych SQL Server — samouczek SQL Server / TSQL część 98?

  5. SQL Server SELECT do istniejącej tabeli