sql >> Database teknologi >  >> RDS >> Sqlserver

Brug OBJECTPROPERTY() til at bestemme, om et objekt er en visning i SQL Server

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.


  1. Sådan beregnes procentdelen af ​​to kolonner i MySQL

  2. Vælg første række af hver gruppe i sql

  3. CASCADE SLET kun én gang

  4. Mere om introduktion af tidszoner i langlivede projekt