Articles

SQL Server Stored Procedure Parameters

Im vorherigen Tutorial haben Sie gelernt, wie Sie eine einfache stored procedure erstellen, die eine SELECT Anweisung umschließt. Wenn Sie diese gespeicherte Prozedur aufrufen, wird einfach die Abfrage ausgeführt und eine Ergebnismenge zurückgegeben.

In diesem Tutorial erweitern wir die gespeicherte Prozedur, mit der Sie einen oder mehrere Werte übergeben können. Das Ergebnis der gespeicherten Prozedur ändert sich basierend auf den Werten der Parameter.,Erstellen einer gespeicherten Prozedur mit einem Parameter

Die folgende Abfrage gibt eine Produktliste aus der products – Tabelle in der Beispieldatenbank zurück:

Sie können eine gespeicherte Prozedur erstellen, die diese Abfrage mit der CREATE PROCEDURE – Anweisung umschließt:

Code language: SQL (Structured Query Language) (sql)

Dieses Mal können wir der gespeicherten Prozedur einen Parameter hinzufügen, um die Produkte zu finden.wessen Listenpreise größer sind als ein Eingabepreis:

In diesem Beispiel:

  • Zuerst haben wir der gespeicherten Prozedur uspFindProducts einen Parameter namens @min_list_price hinzugefügt., Jeder Parameter muss mit dem @ Zeichen beginnen. Die Schlüsselwörter AS DECIMAL geben den Datentyp des Parameters @min_list_price an. Der Parameter muss von den öffnenden und schließenden Klammern umgeben sein.
  • Zweitens haben wir @min_list_price Parameter in der WHERE Klausel der SELECT Anweisung verwendet, um nur die Produkte zu filtern, deren Listenpreise größer oder gleich der @min_list_price.,

Ausführen einer gespeicherten Prozedur mit einem Parameter

Um die gespeicherte Prozedur uspFindProducts auszuführen, übergeben Sie ein Argument wie folgt:

Code language: SQL (Structured Query Language) (sql)

div>

Die gespeicherte Prozedur gibt alle Produkte zurück, deren Listenpreise größer oder gleich 100 sind.,

Wenn Sie das Argument auf 200 ändern, erhalten Sie eine andere Ergebnismenge:

Code language: SQL (Structured Query Language) (sql)

Erstellen einer gespeicherten Prozedur mit mehreren Parametern

Gespeicherte Prozeduren können einen oder mehrere Parameter annehmen. Die Parameter sind durch Kommas getrennt.,iv> gespeicherte Prozedur durch Hinzufügen eines weiteren Parameters mit dem Namen @max_list_price:

Sobald die gespeicherte Prozedur erfolgreich geändert wurde, können Sie sie ausführen, indem Sie zwei Argumente übergeben, eines für @min_list_price und das andere für @max_list_price:

Code language: SQL (Structured Query Language) (sql)

Folgendes zeigt die Ausgabe:

Benannte Parameter verwenden

Falls gespeicherte Prozeduren mehrere Parameter haben, ist es besser und klarer, die gespeicherten Prozeduren mit benannten Parametern auszuführen.,

Die folgende Anweisung führt beispielsweise die gespeicherte Prozedur uspFindProducts mit den benannten Parametern aus @min_list_priceund @max_list_price:

Code language: SQL (Structured Query Language) (sql)

Das Ergebnis der gespeicherten Prozedur ist dasselbe, die Anweisung ist jedoch offensichtlicher.

Erstellen von Textparametern

Mit der folgenden Anweisung wird der gespeicherten Prozedur der Parameter @name als Zeichenfolgenparameter hinzugefügt.,

In der WHERE – Klausel derSELECT – Anweisung haben wir die folgende Bedingung hinzugefügt:

Code language: SQL (Structured Query Language) (sql)

Auf diese Weise gibt die gespeicherte Prozedur die Produkte zurück, deren Listenpreise im Bereich der minimalen und maximalen Listenpreise liegen, und die Produktnamen enthalten auch einen Text, den Sie übergeben.,

Sobald die gespeicherte Prozedur erfolgreich geändert wurde, können Sie sie wie folgt ausführen:

In dieser Anweisung haben wir die gespeicherte Prozedur uspFindProducts verwendet, um das Produkt zu finden, dessen Listenpreise im Bereich von 900 und 1.000 liegen und dessen Namen das Wort Trekenthalten.,

Das folgende Bild zeigt die Ausgabe:

Erstellen optionaler Parameter

Wenn Sie die gespeicherte Prozedur uspFindProducts ausführen, müssen Sie alle drei Argumente übergeben, die den drei Parametern entsprechen.

Mit SQL Server können Sie Standardwerte für Parameter angeben, sodass Sie beim Aufrufen gespeicherter Prozeduren die Parameter mit Standardwerten überspringen können.,

Siehe folgende gespeicherte Prozedur:

In dieser gespeicherten Prozedur haben wir 0 als Standardwert für den Parameter @min_list_price und 999,999 als Standardwert für den Parameter @max_list_price zugewiesen.,

Once the stored procedure is compiled, you can execute it without passing the arguments to @min_list_price and @max_list_price parameters:

Code language: SQL (Structured Query Language) (sql)

In this case, the stored procedure used 0 for @min_list_price parameter and 999,999 for the @max_list_price parameter when it executed the query.,

Die Parameter @min_list_price und @max_list_price werden als optionale Parameter bezeichnet.

Selbstverständlich können Sie die Argumente auch an die optionalen Parameter übergeben., Die folgende Anweisung gibt beispielsweise alle Produkte zurück, deren Listenpreise größer oder gleich 6,000 sind und deren Namen das Wort Trekenthalten:

Code language: SQL (Structured Query Language) (sql)

Mit NULL als Standardwert

In der gespeicherten Prozedur uspFindProducts haben wir 999,999 als standardmäßigen maximalen Listenpreis verwendet. Dies ist nicht robust, da Sie in Zukunft möglicherweise Produkte mit höheren Listenpreisen haben.,

Eine typische Technik, um dies zu vermeiden, ist die Verwendung von NULL als Standardwert für die Parameter:

In der WHERE Klausel haben wir die Bedingung geändert, um NULL Wert für die @max_list_price Parameter:

Code language: SQL (Structured Query Language) (sql)

Die folgende Anweisung führt die gespeicherte Prozedur uspFindProducts aus, um das Produkt zu finden, dessen Listenpreise größer oder gleich 500 sind und dessen Namen das Wort Haroenthalten.,

Code language: SQL (Structured Query Language) (sql)

In diesem tutorial haben Sie erfahren, wie das erstellen und ausführen von gespeicherten Prozeduren mit einem oder mehreren Parametern. Sie haben auch gelernt, optionale Parameter zu erstellen und NULL als Standardwerte für die Parameter zu verwenden.