Articles

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 til uspFindProducts 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 i WHERE bestemmelse af SELECT 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_priceog @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_priceog@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.