Articles

SQL Server lagrade Procedurparametrar

i föregående handledning har du lärt dig hur du skapar en enkel lagrad procedur som sveper en SELECT – sats. När du ringer den här lagrade proceduren kör den helt enkelt frågan och returnerar en resultatuppsättning.

i den här handledningen kommer vi att förlänga den lagrade proceduren som låter dig skicka ett eller flera värden till det. Resultatet av den lagrade proceduren ändras baserat på parametrarna för parametrarna.,Skapa en lagrad procedur med en parameter

följande fråga returnerar en produktlista från tabellen products I provdatabasen:

Du kan skapa en lagrad procedur som sveper denna fråga med hjälp av uttalandet CREATE PROCEDURE:

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

den här gången kan vi dock lägga till en parameter i den lagrade proceduren för att hitta den lagrade produkter vars listpriser är högre än ett ingångspris:

i det här exemplet:

  • först lade vi till en parameter som heter @min_list_price till uspFindProducts lagrade proceduren., Varje parameter måste börja med@ – tecknet. NyckelordenAS DECIMAL anger datatypen för parametern@min_list_price. Parametern måste omges av öppnings-och stängningsfästena.
  • för det andra använde vi@min_list_price – parametern iWHERE – klausulen iSELECT – satsen för att filtrera endast de produkter vars listpriser är högre än eller lika med@min_list_price.,

utför en lagrad procedur med en parameter

för att utföra uspFindProducts lagrad procedur skickar du ett argument till det enligt följande:

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

den lagrade proceduren returnerar alla produkter vars listpriser är högre än eller lika med 100.,

om du ändrar argumentet till 200 får du en annan resultatuppsättning:

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

skapa en lagrad procedur med flera parametrar

lagrade procedurer kan ta en eller flera parametrar. Parametrarna separeras med kommatecken.,iv> lagrad procedur genom att lägga till ytterligare en parameter som heter @max_list_price till den:

När den lagrade proceduren har ändrats kan du köra den genom att skicka två argument, en för @min_list_price och den andra för @max_list_price:

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

följande visar utmatningen:

använda namngivna parametrar

om lagrade procedurer har flera parametrar är det bättre och tydligare att utföra de lagrade procedurerna med namngivna parametrar.,

följande uttalande exekverar till exempeluspFindProducts lagrad procedur med de angivna parametrarna@min_list_priceoch@max_list_price:

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

resultatet av den lagrade proceduren är detsamma, men uttalandet är mer uppenbart.

skapa textparametrar

följande uttalande lägger till parametern@name som en teckensträngsparameter till den lagrade proceduren.,

iWHERE – klausulen iSELECT – satsen lade vi till följande villkor:

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

genom att göra detta returnerar den lagrade proceduren de produkter vars listpriser ligger inom intervallet för min-och max-listpriser och produktnamnen innehåller också en text som du skickar in.,

När den lagrade proceduren har ändrats kan du utföra den enligt följande:

i detta uttalande använde viuspFindProducts lagrade proceduren för att hitta produkten vars listpriser ligger i intervallet 900 och 1000 och deras namn innehåller ordetTrek.,

följande bild visar utmatningen:

skapa valfria parametrar

När du utföruspFindProducts lagrade proceduren måste du skicka alla tre argument som motsvarar de tre parametrarna.

SQL Server kan du ange standardvärden för parametrar så att du kan hoppa över parametrarna med standardvärden när du anropar lagrade procedurer.,

se följande lagrade procedur:

i denna lagrade procedur tilldelade vi0 som standardvärde för parametern@min_list_price och999,999 som standardvärde för parametern@max_list_price.,

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.,

parametrarna@min_list_price och@max_list_price kallas valfria parametrar.

naturligtvis kan du också skicka argumenten till de valfria parametrarna., Till exempel returnerar följande uttalande alla produkter vars listpriser är större eller lika med 6,000 och namnen innehåller ordet Trek:

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

använda null som standardvärde

i uspFindProducts lagrade proceduren använde vi 999,999 som standard högsta Listpris. Detta är inte robust eftersom du i framtiden kan ha produkter med listpriserna som är större än så.,

en typisk teknik för att undvika detta är att användaNULL som standardvärde för parametrarna:

iWHERE – klausulen ändrade vi villkoret för att hanteraNULL – värdet för parametern@max_list_price:

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

följande uttalande utföruspFindProducts lagrad procedur för att hitta den produkt vars listpriser är större eller lika med 500 och namn innehåller ordetHaro.,

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

i den här handledningen har du lärt dig hur du skapar och utför lagrade procedurer med en eller flera parametrar. Du lärde dig också hur du skapar valfria parametrar och använder NULL som standardvärden för parametrarna.