sql >> Databasteknik >  >> RDS >> Sqlserver

Använd OBJECTPROPERTY() för att avgöra om ett objekt är en vy i SQL Server

Du kan använda OBJECTPROPERTY() funktion i SQL Server för att ta reda på om ett objekt är en vy eller inte.

Den här funktionen accepterar två parametrar:objekt-ID och egenskapen som du kontrollerar det för.

Därför kan du skicka objekt-ID som det första argumentet och IsView som den andra, och funktionen returnerar antingen en 1 eller en 0 beroende på om det är en vy eller inte.

Ett returvärde på 1 betyder att det är en vy och ett värde på 0 betyder att det inte är det.

Exempel 1 – Grundläggande användning

Här är ett snabbt exempel att visa.

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

Resultat:

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

I det här fallet, Musik databasen har ett objekt med det angivna ID, och det är en vy.

Exempel 2 – Hämta objekt-ID

Om du känner till objektets namn, men inte dess ID, kan du använda OBJECT_ID() funktion för att hämta ID baserat på dess namn.

Exempel:

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

Resultat:

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

I det här fallet kontrollerade jag samma objekt från föregående exempel.

Här är den igen med ID-utgången separat.

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

Resultat:

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

Exempel 3 – När objektet INTE är en vy

Här är vad som händer när objektet inte är en vy.

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

Resultat:

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

I det här fallet gör det databasen faktiskt har ett objekt med det ID:t, men objektet är faktiskt en tabell, så jag får ett negativt resultat.

Här använder den återigen OBJECT_ID() .

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

Resultat:

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

Exempel 4 – Objekt existerar inte

SQL Server antar att objekt-ID:t finns i den aktuella databaskontexten. Om du skickar in ett objekt-ID från en annan databas får du antingen ett NULL-resultat eller så får du felaktiga resultat.

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

Resultat:

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

I det här fallet innehåller databasen inga objekt med det namnet eller ID, så jag får ett NULL-resultat.

Du får också NULL vid fel eller om du inte har behörighet att visa objektet.


  1. returnera värde vid en position från STRING_SPLIT i SQL Server 2016

  2. Hur uppdaterar jag Identity Column i SQL Server?

  3. Hur man skapar en tabell från en annan tabell i SQL

  4. Implementering av SQL Server Performance Indicator för frågor, lagrade procedurer och triggers