De: Greg Robidoux
Prezentare
putere reală de proceduri stocate este abilitatea de a trece parametrii și dispun de proceduri stocate se ocupe de diferite cererile care sunt făcute. În thistopic ne vom uita la trecerea valorilor parametrilor la o procedură stocată.la fel cum aveți capacitatea de a utiliza parametrii cu codul SQL, puteți, de asemeneasetup procedurile stocate pentru a accepta una sau mai multe valori ale parametrilor. Allexamples utilizează baza de date theaventureworks.,
crearea unei proceduri stocate SQL cu parametrii
- Pentru a crea o procedură stocată cu parametrii folosind următoarea sintaxă:
- creați procedura dbo.uspGetAddress @City nvarchar(30) CA
- Vezi detalii si exemple mai jos
SQL Server Query să se Transforme într-o Procedură Stocată
mai Jos este interogarea doriți să utilizați pentru a crea proceduri stocate.
USE AdventureWorksGOSELECT * FROM Person.AddressGO
ideea este de a crea procedura stocată în care orașul este trecut înprocedura stocată, astfel încât să poată crea rezultate dinamice., Acest lucru se poate face după cum urmează folosindo variabilă. Dacă vom rula codul de mai jos se va întoarce doar rezultatele pentru NewYork.
USE AdventureWorksGODECLARE @City nvarchar(30)SET @City = 'New York'SELECT * FROM Person.AddressWHERE City = @CityGO
am putea folosi această abordare și să actualizăm variabila @City, dar există o modalitate mai bună de a face acest lucru prin crearea unei proceduri stocate.
creați SQL Server procedură stocată cu un parametru
În acest exemplu, vom interoga persoana.Tabelul de adrese de la AdventureWorksdatabase, dar în loc de a obține înapoi toate înregistrările vom limita la doar o particulararcity., Acest exemplu presupune că va exista o potrivire exactă cu privire la valoarea Orașuluicare este trecut.
USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)ASSELECT * FROM Person.AddressWHERE City = @CityGO
Pentru a apela această procedură stocată ne-ar executa după cum urmează:
EXEC dbo.uspGetAddress @City = 'New York'
Ștergerea Procedura Stocată
Dacă ați creat-o procedură stocată și vrei să recreeze storedprocedure cu același nume, puteți șterge folosind followingbefore încearcă să-l creeze din nou.
USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO
Dacă încercați să creați procedura stocată și există deja, veți primi un mesaj de eroare.,
Există deja un obiect numit ‘uspGetAddress în baza de date.
SQL Server procedură stocată cu parametru folosind Wildcard
putem face, de asemenea, același lucru, dar permite utilizatorilor să ne dea un punct de pornirepentru a căuta datele.
aici putem schimba ” = „la un LIKE și de a folosi” % ” wildcard.acest lucru poate fi rulat după cum urmează pentru a găsi toate orașele care încep cu noi.,
EXEC dbo.uspGetAddress @City = 'New'
Server SQL Proceduri Stocate Eroare atunci Când Parametru Nu a Trecut
În ambele procedurii exemple se presupune că valoarea unui parametru va fi mereu trecut. Dacă încercați să executați procedura fără a trece un parametervalue veți primi un mesaj de eroare, cum ar fi următoarele:
EXEC dbo.uspGetAddress
Procedura sau funcția ‘uspGetAddress’ se așteaptă parametru ‘@City’, din care nu este furnizat.,
SQL Server procedură stocată folosind NULL ca parametru implicit
În cele mai multe cazuri,este întotdeauna o bună practică pentru a trece în toate valorile parametrilor, dar uneori nu este posibil. Deci, în acest exemplu, folosim opțiunea NULPENTRU a vă permite să nu treceți într-o valoare a parametrului. Dacă vom crea și rula acest storedprocedure așa cum este, nu va returna date, deoarece este în căutarea pentru orice Cityvalues care egal NULL.
USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULLASSELECT *FROM Person.AddressWHERE City = @CityGO
dacă rulăm următoarele, va funcționa, dar nu vor fi returnate date.,
EXEC dbo.uspGetAddress
Am putea schimba această procedură stocată și de a folosi funcția ISNULL pentru a obține aroundthis. Deci, dacă o valoare este trecută, va folosi valoarea pentru a restrânge resultset-ul și dacă o valoare nu este trecută, va returna toate înregistrările. (Notă: dacă coloana orașului are valori nule, aceasta nu va include aceste valori. Va trebuipentru a adăuga logică suplimentară pentru oraș este nul)
acum, dacă vom rula comanda de mai jos, toate datele vor fi returnate din tabel.,
EXEC dbo.uspGetAddress
creați SQL Server procedură stocată cu mai mulți parametri
configurarea mai multor parametri este foarte ușor de făcut. Trebuie doar să listațifiecare parametru și tipul de date separate printr-o virgulă așa cum se arată mai jos.
pentru a executa acest lucru, puteți face oricare dintre următoarele:
Ultima actualizare: 4/3/2020