In SQL Server können Sie das OBJECTPROPERTY()
verwenden Funktion, um den Typ eines Objekts zu überprüfen. Genauer gesagt können Sie überprüfen, ob es sich um einen bestimmten Typ handelt oder nicht.
Zum Beispiel IsTable
Die Eigenschaft IsView
sagt Ihnen, ob es sich um eine Tabelle handelt oder nicht Eigenschaft sagt Ihnen, ob es sich um eine Ansicht handelt usw.
Dieser Artikel bietet einige grundlegende Beispiele, die prüfen, ob ein Objekt eine Tabelle, eine Ansicht, eine gespeicherte Prozedur oder eine Tabellenwertfunktion ist.
Beispiel 1 – Auf Tabelle prüfen
Hier ist ein Beispiel, das prüft, ob ein Objekt eine Tabelle ist.
USE Music; SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsTable') AS [IsTable];
Ergebnis:
+-----------+ | IsTable | |-----------| | 1 | +-----------+
Hier lautet der Objektname Artists
und das Schema ist dbo
.
In diesem Fall ist das Ergebnis 1
, was darauf hinweist, dass das Objekt tatsächlich eine Tabelle ist.
Beispiel 2 – Auf Ansicht prüfen
Hier ist ein Beispiel, das prüft, ob ein Objekt eine Ansicht ist.
USE Music; SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.Artists'), 'IsView') AS [IsView];
Ergebnis:
+----------+ | IsView | |----------| | 0 | +----------+
In diesem Fall überprüfe ich dasselbe Objekt wie im vorherigen Beispiel, und wir wissen daher bereits, dass es sich nicht um eine Ansicht handelt. Daher ist das Ergebnis 0
, was darauf hinweist, dass es sich nicht um eine Ansicht handelt.
Hier ist ein weiteres Beispiel, dieses Mal ist das Objekt tatsächlich eine Ansicht:
SELECT OBJECTPROPERTY(OBJECT_ID(N'dbo.RockAlbums'), 'IsView') AS [IsView];
Ergebnis:
+----------+ | IsView | |----------| | 1 | +----------+
Beachten Sie, dass ich USE Music;
entfernt habe Teil, weil ich mich bereits in dieser Datenbank befinde. Die OBJECTPROPERTY()
prüft nur schemabezogene Objekte in der aktuellen Datenbank.
Beispiel 3 – Bedingte Anweisung
Wir können das Konzept noch einen Schritt weiterführen und die vorherigen Beispiele in ein IF
einbauen Erklärung. Auf diese Weise können wir eine einzelne Anweisung ausführen, um herauszufinden, welcher Typ das Objekt ist.
Nachfolgend finden Sie grundlegende Beispiele, die einfach den Objekttyp ausgeben.
Tabelle
DECLARE @TheObject varchar(255) = 'dbo.Artists'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Ergebnis:
Table
In diesem Fall ist das Objekt eine Tabelle.
Hier sind weitere Beispiele, die dieselbe Anweisung verwenden, aber mit unterschiedlichen Objekttypen.
Anzeigen
DECLARE @TheObject varchar(255) = 'dbo.RockAlbums'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Ergebnis:
View
Gespeicherte Prozedur
DECLARE @TheObject varchar(255) = 'dbo.uspGetAlbumsByArtist'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Ergebnis:
Stored Procedure
Tabellenwertfunktion
DECLARE @TheObject varchar(255) = 'dbo.ufn_AlbumsByGenre1'; IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsView') AS [IsView]) = 1 PRINT 'View'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTable') AS [IsTable]) = 1 PRINT 'Table'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsProcedure') AS [IsProcedure]) = 1 PRINT 'Stored Procedure'; ELSE IF (SELECT OBJECTPROPERTY(OBJECT_ID(@TheObject), 'IsTableFunction') AS [IsTableFunction]) = 1 PRINT 'Table-valued Function'; ELSE PRINT 'Unknown. Maybe add more types to this statement.';
Ergebnis:
Table-valued Function
Sie können der Anweisung weitere Typen hinzufügen, um sie nützlicher zu machen. Ich habe die Argumente aufgelistet, die OBJECTPROPERTY()
akzeptiert auf dieser Seite. Nicht alle davon sind jedoch Objekttypen – es gibt viele verschiedene Eigenschaften, die Sie überprüfen können.
Eine vollständige Erklärung jeder Eigenschaft finden Sie in der Microsoft-Dokumentation.