Articles

SQL Server Lagret Prosedyre Parametere

I den forrige tutorial, har du lært hvordan du oppretter en enkel lagret prosedyre som omslutter en SELECT uttalelse. Når du kaller dette en lagret prosedyre, er det bare rett og slett kjører spørringen, og returnerer et resultatsett.

I denne opplæringen vil vi utvide lagret prosedyre som tillater deg å passere ett eller flere verdier til det. Resultatet av den lagrede prosedyren vil endres basert på verdiene av parametrene.,Opprette en lagret prosedyre med en parameter

følgende spørring returnerer et produkt liste fra products tabellen i eksempel databasen:

Du kan opprette en lagret prosedyre som omslutter denne spørring ved hjelp av CREATE PROCEDURE uttalelse:

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

Men denne gangen kan vi legge til en parameter til en lagret prosedyre for å finne produkter som liste prisene er større enn en inngang pris:

I dette eksempelet:

  • Første, vi har lagt til en parameter som heter @min_list_price til uspFindProducts lagret prosedyre., Hver parameter må starte med @ logg. AS DECIMAL søkeord angi data type @min_list_price – parameteren. Parameteren må være omgitt av åpning og lukking parentes.
  • Andre, har vi brukt @min_list_price – parameteren i WHERE klausulen i SELECT uttalelse til filteret bare de produkter som liste prisene er større enn eller lik @min_list_price.,

du Utfører en lagret prosedyre med en parameter

for Å utføre. uspFindProducts lagret prosedyre, som du passerer et argument til det som følger:

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

Den lagrede prosedyren returnerer alle produkter som liste prisene er større enn eller lik 100.,

Hvis du vil endre argumentet til 200, du vil få et annet resultat:

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

Opprette en lagret prosedyre med flere parametere

Lagrede prosedyrer kan ta en eller flere parametre. Parametrene er adskilt med komma.,iv> lagret prosedyre ved å legge til en mer parameter som heter @max_list_price til det:

Når den lagrede prosedyren er endret vellykket, kan du kjøre det ved å sende to argumenter, en for @min_list_price og den andre for @max_list_price:

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

følgende viser utgang:

ved Hjelp av navngitte parametre

I tilfelle lagrede prosedyrer har flere parametere, det er bedre og mer klar for å kjøre den lagrede prosedyrer hjelp av navngitte parametre.,

For eksempel, følgende uttalelse utfører uspFindProducts lagret prosedyre ved hjelp av den navngitte parametre @min_list_priceog @max_list_price:

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

resultatet av den lagrede prosedyren er den samme, men uttrykket er mer åpenbare.

Lage tekst parametere

følgende uttalelse legger til @name – parameteren som en tegnstreng parameter til en lagret prosedyre.,

I WHERE klausulen i SELECT uttalelse, har vi lagt følgende vilkår:

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

Ved å gjøre dette, den lagrede prosedyren returnerer produkter som liste prisene er i spekter av min og max liste priser og produktnavn som også inneholder en del av teksten som du passere på.,

Når den lagrede prosedyren er endret vellykket, kan du kjøre den på følgende måte:

I denne uttalelsen, vi brukte uspFindProducts lagret prosedyre for å finne produktet som liste prisene er i størrelsesorden 900-og 1000 og deres navn inneholder ordet Trek.,

følgende bilde viser resultatet:

Opprette valgfrie parametere

Når du utfører uspFindProducts lagret prosedyre, som du må bestå alle tre argumenter som tilsvarer tre parametere.

SQL Server lar deg angi standard verdier for parametre slik at når du ringer lagrede prosedyrer, kan du hoppe over parametere med default-verdier.,

Se følgende som er lagret fremgangsmåte:

I denne lagret prosedyre, vi tildelt 0 som standard verdi for @min_list_price parameter og 999,999 som standard verdi for @max_list_price – parameteren.,

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

@min_list_price og @max_list_price parametere er kalt valgfrie parametere.

selvfølgelig, du kan også sende argumenter til valgfrie parametere., For eksempel, følgende uttalelse returnerer alle produkter som liste prisene er større eller lik 6,000 og navnene som inneholder ordet Trek:

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

ved Hjelp av NULL som standardverdi

I uspFindProducts lagret prosedyre, vi brukte 999,999 som standard maksimal liste pris. Dette er ikke robust fordi det i fremtiden kan du ha produkter med listen priser som er større enn som så.,

En vanlig teknikk for å unngå dette på er å bruke NULL som standard verdi for parametere:

I WHERE klausulen, endret vi i stand til å håndtere NULL verdien for @max_list_price parameter:

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

følgende uttalelse utfører uspFindProducts lagret prosedyre for å finne produktet som liste prisene er større eller lik 500 og navn som inneholder ordet Haro.,

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

I denne opplæringen, har du lært hvordan å opprette og kjøre lagrede prosedyrer med en eller flere parametre. Du lærte også å lage valgfrie parametere og bruke NULL som standard verdier for parametrene.