SQL Server opgeslagen Procedureparameters
In de vorige tutorial hebt u geleerd hoe u een eenvoudige opgeslagen procedure kunt maken die een SELECT
– instructie bevat. Wanneer u deze opgeslagen procedure, het gewoon draait de query en geeft een resultaat set.
in deze tutorial zullen we de opgeslagen procedure uitbreiden waarmee u een of meer waarden kunt doorgeven. Het resultaat van de opgeslagen procedure zal veranderen op basis van de waarden van de parameters.,Het maken van een opgeslagen procedure met één parameter
De volgende query retourneert een lijst met producten uit de products
tabel in de voorbeeld data:
U kunt het maken van een opgeslagen procedure die loopt deze query met behulp van de CREATE PROCEDURE
verklaring:
Code language: SQL (Structured Query Language) (sql)
Echter, deze keer kunnen we een parameter toevoegen om de opgeslagen procedure voor het vinden van de producten waarvan de prijzen hoger zijn dan een input-prijs:
In dit voorbeeld:
- Eerste, voegden we een parameter met de naam
@min_list_price
om hetuspFindProducts
opgeslagen procedure., Elke parameter moet beginnen met het teken@
. DeAS DECIMAL
sleutelwoorden specificeren het gegevenstype van de@min_list_price
parameter. De parameter moet worden omgeven door de opening en sluiting haken. - ten tweede hebben we
@min_list_price
parameter gebruikt in deWHERE
clausule van deSELECT
verklaring om alleen de producten te filteren waarvan de catalogusprijzen groter of gelijk zijn aan de@min_list_price
.,
Uitvoeren van een opgeslagen procedure met één parameter
Voor het uitvoeren van de uspFindProducts
opgeslagen procedure, u bent geslaagd voor een argument als volgt:
Code language: SQL (Structured Query Language) (sql)
De opgeslagen procedure retourneert alle producten waarvan de prijzen groter zijn dan of gelijk zijn aan 100.,
Als u het argument naar 200 wijzigt, krijgt u een andere resultaatset:
Code language: SQL (Structured Query Language) (sql)
een opgeslagen procedure aanmaken met meerdere parameters
opgeslagen procedures kunnen een of meer parameters nemen. De parameters worden gescheiden door komma ‘ s.,iv> opgeslagen procedure door het toevoegen van een parameter met de naam @max_list_price
aan:
Zodra de opgeslagen procedure is succesvol gewijzigd, kunt u het uitvoeren van het door het passeren van twee argumenten, één voor @min_list_price
, en de @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
Het volgende toont de output:
het Gebruik van benoemde parameters
In het geval van opgeslagen procedures met meerdere parameters, het is beter en meer duidelijk aan het uitvoeren van de opgeslagen procedures met behulp van named parameters.,
bijvoorbeeld, het volgende statement voert deuspFindProducts
opgeslagen procedure uit met behulp van de genoemde parameters @min_list_price
en @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
het resultaat van de opgeslagen procedure is hetzelfde, maar het statement is duidelijker.
tekstparameters aanmaken
het volgende statement voegt de parameter @name
toe als een tekenstringparameter aan de opgeslagen procedure.,
In deWHERE
clausule van deSELECT
statement hebben we de volgende voorwaarde toegevoegd:
Code language: SQL (Structured Query Language) (sql)
door dit te doen, retourneert de opgeslagen procedure de producten waarvan de catalogusprijzen in het bereik van min en max catalogusprijzen liggen en bevatten de productnamen ook een stuk tekst dat u doorgeeft.,
zodra de opgeslagen procedure met succes is gewijzigd, kunt u het als volgt uitvoeren:
in dit statement hebben we de uspFindProducts
opgeslagen procedure gebruikt om het product te vinden waarvan de catalogusprijzen tussen 900 en 1000 liggen en hun namen het woord Trek
bevatten.,
De volgende afbeelding toont de uitvoer:
optionele parameters aanmaken
wanneer u de uspFindProducts
opgeslagen procedure uitvoert, moet u alle drie de bijbehorende argumenten doorgeven naar de drie parameters.met
SQL Server kunt u standaardwaarden voor parameters opgeven, zodat u, wanneer u opgeslagen procedures aanroept, de parameters met standaardwaarden kunt overslaan.,
zie de volgende opgeslagen procedure:
in deze opgeslagen procedure hebben we 0
toegewezen als de standaardwaarde voor de @min_list_price
parameter en 999,999
als de standaardwaarde voor de @max_list_price
parameter.,
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.,
De @min_list_price
en @max_list_price
parameters worden optionele parameters genoemd.
natuurlijk kunt u de argumenten ook doorgeven aan de optionele parameters., Bijvoorbeeld, de volgende instructie geeft als resultaat alle producten waarvan de prijzen groter zijn dan of gelijk aan 6,000
en de namen bevatten het woord Trek
:
Code language: SQL (Structured Query Language) (sql)
het Gebruik van NULL als de standaard waarde
In de uspFindProducts
opgeslagen procedure, we gebruikten 999,999
als standaard lijst maximum prijs. Dit is niet robuust, want in de toekomst kunt u producten met de catalogusprijzen die hoger zijn dan dat.,
Een typische techniek om dit te voorkomen is het gebruik van NULL
als standaard waarde voor de parameters:
In de WHERE
component, hebben we de voorwaarde te hanteren NULL
waarde voor de @max_list_price
parameter:
Code language: SQL (Structured Query Language) (sql)
De volgende verklaring voert de uspFindProducts
opgeslagen procedure om het product te vinden waarvan de lijst prijzen zijn groter of gelijk aan 500 en bevatten de namen van de word – Haro
.,
Code language: SQL (Structured Query Language) (sql)
in deze tutorial hebt u geleerd hoe u opgeslagen procedures kunt maken en uitvoeren met een of meer parameters. U hebt ook geleerd hoe u optionele parameters kunt maken en NULL als standaardwaarden voor de parameters kunt gebruiken.