SQL Server tárolt eljárás paraméterekkel


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

  1. tárolt eljárás létrehozása paraméterekkel a következő szintaxis használatával:
  2. eljárás létrehozása dbo.uspGetAddress @City Nvarchar (30) AS
  3. 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.,

Msg 2714, Level 16, State 3, Procedure uspGetAddress, Line 1
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
Msg 201, Level 16, State 4, Procedure uspGetAddress, Line0
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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük