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.