Můžete použít OBJECTPROPERTY()
funkce na serveru SQL Server, abyste zjistili, zda je objekt pohledem.
Tato funkce přijímá dva parametry:ID objektu a vlastnost, pro kterou ji hledáte.
Proto můžete předat ID objektu jako první argument a IsView
jako druhý a funkce vrátí buď 1
nebo 0
podle toho, jestli je to pohled nebo ne.
Vrácená hodnota 1
znamená, že je zobrazení a hodnotu 0
znamená, že není.
Příklad 1 – Základní použití
Zde je rychlý příklad k demonstraci.
USE Music; SELECT OBJECTPROPERTY(1525580473, 'IsView') AS [IsView];
Výsledek:
+----------+ | IsView | |----------| | 1 | +----------+
V tomto případě Hudba databáze má objekt s poskytnutým ID a je to pohled.
Příklad 2 – Získání ID objektu
Pokud znáte název objektu, ale neznáte jeho ID, můžete použít OBJECT_ID()
funkce pro načtení ID na základě jeho názvu.
Příklad:
SELECT OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Výsledek:
+----------+ | IsView | |----------| | 1 | +----------+
V tomto případě jsem zkontroloval stejný objekt z předchozího příkladu.
Zde je to opět s výstupem ID samostatně.
SELECT OBJECT_ID('RockAlbums') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Výsledek:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 1525580473 | 1 | +-------------+----------+
Příklad 3 – Když objekt NENÍ pohled
Co se stane, když objekt není pohledem.
SELECT OBJECTPROPERTY(885578193, 'IsView') AS [IsView];
Výsledek:
+----------+ | IsView | |----------| | 0 | +----------+
V tomto případě databáze dělá ve skutečnosti mají objekt s tímto ID, ale objekt je ve skutečnosti tabulka, takže dostanu negativní výsledek.
Zde je to opět pomocí OBJECT_ID()
.
SELECT OBJECT_ID('Artists') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Artists'), 'IsView') AS [IsView];
Výsledek:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 885578193 | 0 | +-------------+----------+
Příklad 4 – Objekt neexistuje
SQL Server předpokládá, že ID objektu je v aktuálním kontextu databáze. Pokud předáte ID objektu z jiné databáze, dostanete buď výsledek NULL, nebo nesprávné výsledky.
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsView') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsView') AS [11111111];
Výsledek:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
V tomto případě databáze neobsahuje žádné objekty tohoto jména nebo ID, takže dostanu výsledek NULL.
Při chybě nebo v případě, že nemáte oprávnění k zobrazení objektu, získáte také hodnotu NULL.