Server SQL Proceduri Stocate Parametrii
În tutorialul anterior, ați învățat cum să creeze o simplă procedură stocată care se infasoara un SELECT
declarație. Când apelați această procedură stocată, pur și simplu rulează interogarea și returnează un set de rezultate.în acest tutorial, vom extinde procedura stocată care vă permite să îi transmiteți una sau mai multe valori. Rezultatul procedurii stocate se va schimba pe baza valorilor parametrilor.,Crearea unei proceduri stocate cu un parametru
următoarea interogare returnează o listă de produse de la products
tabel în baza de date exemplu:
puteți crea o procedură stocată care se infasoara această interogare folosind CREATE PROCEDURE
declarație:
Code language: SQL (Structured Query Language) (sql)
cu toate Acestea, de data aceasta putem adăuga un parametru pentru proceduri stocate pentru a gasi produsele ale căror prețuri de listă sunt mai mari decât prețul de intrare:
În acest exemplu:
- în Primul rând, am adăugat un parametru numit
@min_list_price
lauspFindProducts
procedură stocată., Fiecare parametru trebuie să înceapă cu semnul@
. Cuvintele cheieAS DECIMAL
specifică tipul de date al parametrului@min_list_price
. Parametrul trebuie să fie înconjurat de parantezele de deschidere și închidere. - în al Doilea rând, am folosit
@min_list_price
parametru înWHERE
clauza deSELECT
declarație pentru a filtra numai produse a căror listă prețurile sunt mai mari decât sau egal cu@min_list_price
.,
Executa o procedură stocată cu un parametru
Pentru a executa uspFindProducts
proceduri stocate, te trece un argument pentru asta, după cum urmează:
Code language: SQL (Structured Query Language) (sql)
procedura stocată returnează toate produsele ale căror prețuri de listă sunt mai mari decât sau egale cu 100.,
Dacă vă schimbați argument la 200, veți primi un alt set de rezultate:
Code language: SQL (Structured Query Language) (sql)
Crearea unei proceduri stocate cu mai mulți parametri
proceduri Stocate pot avea unul sau mai mulți parametri. Parametrii sunt separați prin virgule.,iv> proceduri stocate, adăugând un parametru numit @max_list_price
pentru:
Odată ce procedura stocată este modificat cu succes, puteți executa prin trecerea două argumente, unul pentru @min_list_price
și cealaltă pentru @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
următoarele prezinta ieșire:
Folosind parametri numit
În cazul procedurilor stocate avea mai multe parametri, este mai bine și mai clar pentru a executa proceduri stocate folosind numele parametrilor.,
De exemplu, următoarea declarație execută uspFindProducts
proceduri stocate folosind parametri numit @min_list_price
și @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
rezultatul procedură stocată este același cu toate acestea, situația este mult mai evident.
crearea parametrilor de text
următoarea declarație adaugă parametrul @name
ca parametru șir de caractere la procedura stocată.,
În WHERE
clauza de SELECT
declarație, am adăugat următoarele condiții:
Code language: SQL (Structured Query Language) (sql)
De a face acest lucru, procedura stocată returnează produsele ale căror prețuri de listă sunt în intervalul dintre min și max prețurile de listă și nume de produse conțin, de asemenea, o bucată de text pe care le trece în.,
Odată ce procedura stocată este modificat cu succes, puteți executa după cum urmează:
În această declarație, am folosit uspFindProducts
procedură stocată pentru a găsi produsul a cărui listă prețurile sunt în intervalul de 900 și 1.000 și numele lor conțin cuvântul Trek
.,
imaginea De mai jos prezinta ieșire:
Crearea parametri opționali
Când executați uspFindProducts
proceduri stocate, trebuie să treci toate cele trei argumente corespunzătoare celor trei parametri.SQL Server vă permite să specificați valorile implicite pentru parametri, astfel încât atunci când apelați proceduri stocate, puteți sări peste parametrii cu valori implicite.,
a se Vedea următoarele proceduri stocate:
În această procedură stocată, am atribuit 0
ca valoare implicită pentru @min_list_price
parametru și 999,999
ca valoare implicită pentru @max_list_price
parametru.,
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
și @max_list_price
parametri se numesc parametri opționali.desigur ,puteți transmite argumentele și parametrilor opționali., De exemplu, următoarea declarație returnează toate produsele ale căror prețuri de listă sunt mai mari sau egale cu 6,000
și nume conțin cuvântul Trek
:
Code language: SQL (Structured Query Language) (sql)
Utilizarea NUL ca valoare implicită
În uspFindProducts
proceduri stocate, am folosit 999,999
ca implicit maxim de prețul de listă. Acest lucru nu este robust, deoarece în viitor este posibil să aveți produse cu prețuri de listă care sunt mai mari decât atât.,
Un tipic tehnica pentru a evita acest lucru este de a utiliza NULL
ca valoare implicită pentru parametrii:
În WHERE
clauza, am schimbat condiția să se ocupe de NULL
valoare @max_list_price
parametru:
Code language: SQL (Structured Query Language) (sql)
următoarea declarație execută uspFindProducts
procedură stocată pentru a găsi produsul a cărui listă de prețuri sunt mai mari sau egale cu 500 și nume conțin cuvântul Haro
.,
Code language: SQL (Structured Query Language) (sql)
În acest tutorial, ai învățat cum de a crea și de a executa proceduri stocate cu unul sau mai mulți parametri. De asemenea, ați învățat cum să creați parametri opționali și să utilizați NULL ca valori implicite pentru parametri.