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örterAS 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 derWHERE
Klausel derSELECT
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_price
und @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 Trek
enthalten.,
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 Trek
enthalten:
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 Haro
enthalten.,
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.