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.