Du kan bruge OBJECTPROPERTY()
funktion i SQL Server for at finde ud af, om et objekt er en visning eller ej.
Denne funktion accepterer to parametre:objekt-id'et og den egenskab, som du tjekker det for.
Derfor kan du videregive objekt-id'et som det første argument og IsView
som den anden, og funktionen returnerer enten en 1
eller en 0
afhængig af om det er en udsigt eller ej.
En returværdi på 1
betyder, at det er en visning og en værdi på 0
betyder, at det ikke er det.
Eksempel 1 – Grundlæggende brug
Her er et hurtigt eksempel at demonstrere.
USE Music; SELECT OBJECTPROPERTY(1525580473, 'IsView') AS [IsView];
Resultat:
+----------+ | IsView | |----------| | 1 | +----------+
I dette tilfælde er Musik databasen har et objekt med det angivne ID, og det er en visning.
Eksempel 2 – Hentning af objekt-id'et
Hvis du kender objektets navn, men ikke dets ID, kan du bruge OBJECT_ID()
funktion for at hente ID'et baseret på dets navn.
Eksempel:
SELECT OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Resultat:
+----------+ | IsView | |----------| | 1 | +----------+
I dette tilfælde kontrollerede jeg det samme objekt fra det forrige eksempel.
Her er den igen med ID-udgangen separat.
SELECT OBJECT_ID('RockAlbums') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Resultat:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 1525580473 | 1 | +-------------+----------+
Eksempel 3 – Når objektet IKKE er en visning
Her er, hvad der sker, når objektet ikke er en visning.
SELECT OBJECTPROPERTY(885578193, 'IsView') AS [IsView];
Resultat:
+----------+ | IsView | |----------| | 0 | +----------+
I dette tilfælde gør det databasen faktisk har et objekt med det ID, men objektet er faktisk en tabel, så jeg får et negativt resultat.
Her bruger den igen OBJECT_ID()
.
SELECT OBJECT_ID('Artists') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Artists'), 'IsView') AS [IsView];
Resultat:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 885578193 | 0 | +-------------+----------+
Eksempel 4 – Objekt eksisterer ikke
SQL Server antager, at objekt-id'et er i den aktuelle databasekontekst. Hvis du sender et objekt-id fra en anden database, får du enten et NULL-resultat, eller du får forkerte resultater.
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsView') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsView') AS [11111111];
Resultat:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
I dette tilfælde indeholder databasen ingen objekter med det navn eller ID, og så får jeg et NULL resultat.
Du får også NULL ved fejl, eller hvis du ikke har tilladelse til at se objektet.