By: Greg Robidoux
áttekintés
a tárolt eljárások valódi ereje a paraméterek átadásának képessége, és aa tárolt eljárás kezeli az eltérő kéréseket. Ebben az esetben megvizsgáljuk a paraméterértékek átadását egy tárolt eljáráshoz.
magyarázat
csakúgy, mint az SQL-kóddal rendelkező paraméterek használata, a tárolt eljárásokat is beállíthatja egy vagy több paraméterérték elfogadására. Az Allexamples a adventureworks adatbázist használja.,
SQL tárolt eljárás létrehozása paraméterekkel
- tárolt eljárás létrehozása paraméterekkel a következő szintaxis használatával:
- eljárás létrehozása dbo.uspGetAddress @City Nvarchar (30) AS
- Lásd az alábbi részleteket és példákat
SQL Server lekérdezés, hogy tárolt eljárássá váljon
Az alábbiakban az a lekérdezés, amelyet használni akarunk a tárolt eljárás létrehozásához.
USE AdventureWorksGOSELECT * FROM Person.AddressGO
az ötlet az, hogy létrehozzuk a tárolt eljárást, ahol a város átkerül a thestored eljárásba, így dinamikus eredményeket hozhat létre., Ezt a következőképpen lehet elvégezni: változó. Ha fut az alábbi kódot fog visszatérni csak az eredmények NewYork.
USE AdventureWorksGODECLARE @City nvarchar(30)SET @City = 'New York'SELECT * FROM Person.AddressWHERE City = @CityGO
használhatnánk ezt a megközelítést, és folyamatosan frissíthetnénk a @City változót, de van egy jobb módja ennek a tárolt eljárás létrehozásával.
SQL Server tárolt eljárás létrehozása egy paraméterrel
ebben a példában lekérdezzük a személyt.Cím táblázat a AdventureWorksdatabase, de ahelyett, hogy vissza az összes rekordot fogjuk korlátozni, hogy csak egy particularcity., Ez a példa azt feltételezi, hogy pontos mérkőzés lesz a város értékénezt átadják.
USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)ASSELECT * FROM Person.AddressWHERE City = @CityGO
Hogy hívják ezt a tárolt eljárás szeretnénk végrehajtani a következőképpen:
EXEC dbo.uspGetAddress @City = 'New York'
Törlése a Tárolt Eljárás
Ha létre a tárolt eljárás, illetve akarod, hogy újra a storedprocedure ugyanazzal a névvel, törölheti a followingbefore akarja, hogy hozzon létre újra.
USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO
ha megpróbálja létrehozni a tárolt eljárást, és már létezik, akkor hibaüzenet jelenik meg.,
már van egy objektum neve “uspGetAddress” az adatbázisban.
SQL Server tárolt eljárás paraméter segítségével helyettesítő
mi is ugyanezt, de lehetővé teszi a felhasználók számára, hogy nekünk egy kiindulási ponthogy keressen az adatokat.
itt módosíthatjuk a ” = “- Et hasonlóra, és használhatjuk a ” % ” helyettesítő kártyát.
Ez a következőképpen futtatható, hogy megtalálja az összes új várost.,
EXEC dbo.uspGetAddress @City = 'New'
SQL Server tárolt eljárás hiba, ha a paraméter nem telt el
mindkét eljárás példák azt feltételezi, hogy a paraméter értéke alwaysbe telt. Ha megpróbálja végrehajtani az eljárást anélkül, hogy átadná a parametervalue kap egy hibaüzenet, mint például a következő:
EXEC dbo.uspGetAddress
eljárás vagy funkció “uspGetAddress” elvárja paraméter “@City”, amelynem szállított.,
SQL Server tárolt eljárás segítségével null alapértelmezett paraméterként
a legtöbb esetben ez mindig egy jó gyakorlat, hogy adja át az összes paraméter értékét, de néha ez nem lehetséges. Tehát ebben a példában a NULL opciót használjukhogy ne adja át a paraméter értékét. Ha létrehozzuk és futtatjuk ezt a storedprocedure-t, mivel nem ad vissza semmilyen adatot, mert olyan Cityvalues-t keres, amely egyenlő NULL-val.
USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULLASSELECT *FROM Person.AddressWHERE City = @CityGO
Ha a következőt futtatjuk, akkor működni fog, de az adatok nem kerülnek vissza.,
EXEC dbo.uspGetAddress
megváltoztathatjuk ezt a tárolt eljárást, és az ISNULL függvény segítségével körbejárhatunkezt. Tehát, ha egy értéket ad át, akkor az értéket használja a resultset szűkítéséhez, ha egy értéket nem ad át, akkor az összes rekordot visszaadja. (Megjegyzés: ifthe város oszlop NULL értékek ez nem tartalmazza ezeket az értékeket. További logikát kell hozzáadnia a City NULL-hez)
most, ha az alábbi parancsot futtatjuk, az összes adat visszatér a táblázatból.,
EXEC dbo.uspGetAddress
SQL Server tárolt eljárás létrehozása több paraméterrel
több paraméter beállítása nagyon egyszerű. Csak meg kell listázniminden paraméter, valamint az adattípus vesszővel elválasztva, az alábbiak szerint.
ennek végrehajtásához a következők bármelyikét teheti:
Utolsó frissítés: 2020.3.4.