In SQL Server können Sie das OBJECTPROPERTY()
verwenden Funktion, um herauszufinden, ob ein Objekt eine gespeicherte Prozedur ist oder nicht.
Diese Funktion akzeptiert zwei Parameter:die Objekt-ID und die Eigenschaft, nach der Sie suchen.
Daher können Sie die Objekt-ID als erstes Argument und IsProcedure
übergeben als zweites, und die Funktion gibt entweder einen 1
zurück oder eine 0
abhängig davon, ob es sich um eine gespeicherte Prozedur handelt oder nicht.
Ein Rückgabewert von 1
bedeutet, dass es ist eine gespeicherte Prozedur und einen Wert von 0
bedeutet, dass dies nicht der Fall ist.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein kurzes Beispiel zur Veranschaulichung.
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(466100701, 'IsProcedure') AS [IsProcedure];
Ergebnis:
+---------------+ | IsProcedure | |---------------| | 1 | +---------------+
In diesem Fall die Musik Die Datenbank hat ein Objekt mit der bereitgestellten ID und ist tatsächlich eine gespeicherte Prozedur.
Beispiel 2 – Abrufen der Objekt-ID
Wenn Sie den Namen des Objekts kennen, aber nicht seine ID, können Sie die OBJECT_ID()
verwenden Funktion zum Abrufen der ID basierend auf ihrem Namen.
Beispiel:
SELECT OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];
Ergebnis:
+---------------+ | IsProcedure | |---------------| | 1 | +---------------+
In diesem Fall habe ich dasselbe Objekt aus dem vorherigen Beispiel überprüft.
Hier wird nochmal mit der ID getrennt ausgegeben.
SELECT OBJECT_ID('Integration.GetLineageKey') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Integration.GetLineageKey'), 'IsProcedure') AS [IsProcedure];
Ergebnis:
+-------------+---------------+ | Object ID | IsProcedure | |-------------+---------------| | 466100701 | 1 | +-------------+---------------+
Beispiel 3 – Wenn das Objekt KEINE gespeicherte Prozedur ist
Folgendes passiert, wenn das Objekt keine gespeicherte Prozedur ist.
SELECT OBJECTPROPERTY(1013578649, 'IsProcedure') AS [IsProcedure];
Ergebnis:
+---------------+ | IsProcedure | |---------------| | 0 | +---------------+
In diesem Fall macht es die Datenbank habe tatsächlich ein Objekt mit dieser ID, aber das Objekt ist eigentlich eine Tabelle, also erhalte ich ein negatives Ergebnis.
Hier wird wieder OBJECT_ID()
verwendet .
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'IsProcedure') AS [IsProcedure];
Ergebnis:
+-------------+---------------+ | Object ID | IsProcedure | |-------------+---------------| | 1013578649 | 0 | +-------------+---------------+
Beispiel 4 – Objekt existiert nicht
SQL Server geht davon aus, dass sich die Objekt-ID im aktuellen Datenbankkontext befindet. Wenn Sie eine Objekt-ID aus einer anderen Datenbank übergeben, erhalten Sie entweder ein NULL-Ergebnis oder falsche Ergebnisse.
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsProcedure') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsProcedure') AS [11111111];
Ergebnis:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
In diesem Fall enthält die Datenbank keine Objekte mit diesem Namen oder dieser ID.