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
tiluspFindProducts
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 iWHERE
klausulen iSELECT
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_price
og @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.