SQL Server Stored Procedure Parametre
I den foregående tutorial, du har lært at lave en simpel lagret procedure, der omslutter en SELECT
erklæring. Når du kalder denne gemte procedure, kører den simpelthen forespørgslen og returnerer et resultatsæt.
i denne tutorial udvider vi den lagrede procedure, som giver dig mulighed for at overføre en eller flere værdier til den. Resultatet af den lagrede procedure ændres baseret på parameterværdierne.,Oprettelse af en lagret procedure med én parameter
følgende forespørgsel returnerer en liste over produkter fra products
tabel i eksempeldatabasen:
Du kan oprette en lagret procedure, der omslutter denne forespørgsel ved brug af CREATE PROCEDURE
erklæring:
Code language: SQL (Structured Query Language) (sql)
Men denne gang kan vi føje en parameter til en lagret procedure til at finde de produkter, hvis priser liste er større end en input-pris:
I dette eksempel:
- Første, har vi tilføjet en parameter ved navn
@min_list_price
tiluspFindProducts
gemt procedure., Hver parameter skal starte med@
tegn.AS DECIMAL
nøgleord Angiv datatypen for parameteren@min_list_price
. Parameteren skal være omgivet af åbning og lukning beslag. - Andet, vi brugte
@min_list_price
parameter iWHERE
bestemmelse afSELECT
erklæring om, at filteret kun produkter, hvis priser liste er større end eller lig med@min_list_price
.,
Udførelse af en lagret procedure med én parameter
for At udføre uspFindProducts
lagret procedure, du passerer et argument for, at det som følger:
Code language: SQL (Structured Query Language) (sql)
der er lagret procedure, der returnerer alle produkter, hvis priser liste er større end eller lig med 100.,
Hvis du ændrer argument til 200, vil du få et andet resultat, der er:
Code language: SQL (Structured Query Language) (sql)
Oprettelse af en lagret procedure med flere parametre
Lagrede procedurer, der kan tage en eller flere parametre. Parametrene er adskilt af kommaer.,iv> gemt procedure ved at tilføje endnu en parameter ved navn @max_list_price
til det:
Når den lagrede procedure er ændret med succes, du kan udføre det ved at passere to argumenter, en for @min_list_price
og @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
følgende viser output:
Brug af navngivne parametre
I tilfælde af lagrede procedurer har flere parametre, det er bedre og mere klar til at udføre de procedurer, der er gemt ved hjælp af navngivne parametre.,
For eksempel følgende sætning udfører uspFindProducts
lagret procedure ved hjælp af navngivne parametre @min_list_price
og @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
resultatet af den lagrede procedure er den samme, men den sætning er mere indlysende.
oprettelse af tekstparametre
følgende sætning tilføjer parameteren@name
som en tegnstrengparameter til den lagrede procedure.,
I WHERE
bestemmelse af SELECT
erklæring, har vi tilføjet følgende betingelse:
Code language: SQL (Structured Query Language) (sql)
Ved at gøre dette, den lagrede procedure returnerer produkter, hvis listen priser er i intervallet min-og max-liste priser og produktnavne, der også indeholder et stykke tekst, som du passerer på.,
Når den lagrede procedure er ændret med succes, kan du udføre den som følger:
I denne erklæring, vi brugte uspFindProducts
gemt procedure for at finde det produkt, hvis listen priser er i størrelsesordenen 900 og 1.000 og deres navne indeholder ordet Trek
.,
følgende billede viser output:
Oprettelse valgfri parametre
Når du udføre uspFindProducts
lagret procedure, som du skal bestå alle tre argumenter, der svarer til de tre parametre.
s .l Server giver dig mulighed for at specificere standardværdier for parametre, så når du ringer til gemte procedurer, kan du springe parametrene over med standardværdier.,
Se følgende lagret procedure:
I denne stored procedure, som vi tildeles 0
som standard værdi for @min_list_price
parameter og 999,999
som standard værdi for @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.,
parametrene@min_list_price
og@max_list_price
kaldes valgfrie parametre.
selvfølgelig kan du også videregive argumenterne til de valgfrie parametre., For eksempel følgende sætning returnerer alle produkter, hvis priser liste er større end eller lig med 6,000
og de navne, der indeholder ordet Trek
:
Code language: SQL (Structured Query Language) (sql)
ved Hjælp af NULL som standard værdi
I uspFindProducts
lagret procedure, vi brugte 999,999
som standard maksimale pris. Dette er ikke robust, fordi du i fremtiden muligvis har produkter med listepriserne, der er større end det.,
En typisk teknik til at undgå dette på er at bruge NULL
som standard værdi for de parametre:
I WHERE
klausul, vi ændrede tilstand til at håndtere NULL
værdi @max_list_price
parameter:
Code language: SQL (Structured Query Language) (sql)
følgende sætning udfører uspFindProducts
gemt procedure for at finde det produkt, hvis listen priserne er større end eller lig med 500 og navne, der indeholder ordet Haro
.,
Code language: SQL (Structured Query Language) (sql)
I denne tutorial, du har lært at skabe og udføre lagrede procedurer med et eller flere parametre. Du lærte også, hvordan du opretter valgfrie parametre og bruger NULL som standardværdier for parametrene.