Skip to main content

Tárolt eljárások létrehozása az SQL Server számára

java.sql.SQLException: Unknown initial character set index '224' received from server. (Lehet 2024)

java.sql.SQLException: Unknown initial character set index '224' received from server. (Lehet 2024)
Anonim

A Microsoft SQL Server a tárolt eljárási mechanizmust biztosítja az adatbázisfejlesztési folyamat egyszerűsítése érdekében, a Transact-SQL utasítások kezelhető blokkokba csoportosításával. A tárolt eljárások nagyra értékelik a legtöbb SQL Server fejlesztőt, akik megtalálják a hatékonyságot és a biztonsági előnyöket, amelyeket érnek, jól érzik az idő előtti befektetést.

A tárolt eljárások használata előnyei

Miért kell a fejlesztőnek tárolt eljárásokat használni?

Itt vannak a technológia legfontosabb előnyei:

  • Előfeldolgozott végrehajtás: Az SQL Server minden egyes tárolt eljárást egyszer összeállít, majd újra felhasználja a végrehajtási tervet. Ez óriási teljesítménynövekedést eredményez, ha a tárolt eljárásokat ismételten hívják.
  • Csökkentett ügyfél / kiszolgáló forgalom: Ha a hálózati sávszélesség aggodalomra ad okot a környezetében, akkor örömmel fog tudni, hogy a tárolt eljárások csökkenthetik a hosszú SQL lekérdezéseket egy sorra, amelyet a vezetéknél továbbítanak.
  • A kód hatékony újrahasználata és programozási absztrakció: A tárolt eljárásokat több felhasználó és ügyfélprogram is használhatja. Ha tervezett módon használja őket, akkor a fejlesztési ciklus kevesebb időt vesz igénybe.
  • Továbbfejlesztett biztonsági ellenőrzések: A felhasználók engedélyezhetik a tárolt eljárás végrehajtását az alapul szolgáló táblagevitelektől függetlenül.

A tárolt eljárások hasonlóak a felhasználó által meghatározott funkciókhoz, de vannak apró különbségek.

Szerkezet

A tárolt eljárások hasonlóak a többi programozási nyelv konstrukcióihoz.

Az adatokat beviteli paraméterek formájában fogadják el, amelyeket a végrehajtási időben határoztak meg. Ezeket a bemeneti paramétereket (ha implementálják) használják egy sor olyan állítás végrehajtására, amelyek bizonyos eredményeket hoznak. Ezt az eredményt visszaadja a hívó környezetnek egy rekordlettel, kimeneti paraméterekkel és visszatérési kóddal.

Ez úgy hangzik, mint egy falat, de azt fogja találni, hogy a tárolt eljárások valójában nagyon egyszerű.

Példa

Vessünk egy gyakorlati példát a lap alján feltüntetett táblára vonatkozó gyakorlati példával kapcsolatban. Ez az információ valós időben frissül, és a raktárkezelők folyamatosan ellenőrzik a raktárban tárolt és szállítandó termékek szintjét. A múltban minden kezelő az alábbiakhoz hasonló lekérdezéseket indított el:

SELECT termék, mennyiségFROM InventoryWHERE Raktár = 'FL'

Ez eredménytelenedést eredményezett az SQL Server-en. Minden alkalommal, amikor egy raktárkezelő végrehajtotta a lekérdezést, az adatbázis-kiszolgáló kénytelen volt újrafordítani a lekérdezést és végrehajtani azt a semmiből. Azt is megkövetelte, hogy a raktárkezelő ismerje meg az SQL-t és a megfelelő hozzáférési jogosultságokat a táblázatinformációkhoz.Ehelyett a folyamat egy tárolt eljárás használatával egyszerűsíthető. Itt van egy sp_GetInventory nevű eljárás kódja, amely lekérdezi az adott raktár készletszintjét.

CREATE PROCEDURE sp_GetInventory@ helymegosztás varchar (10)MINTSELECT termék, mennyiségFROM InventoryWHERE Raktár = @ helymeghatározás

A floridai raktárkezelő a következő parancs kiadásával elérheti a készletszinteket:

EXECUTE sp_GetInventory 'FL'

A New York-i raktárkezelő ugyanazt a tárolt eljárást alkalmazhatja a terület leltárának eléréséhez:

EXECUTE sp_GetInventory 'NY'

Nyilvánvaló, ez egy egyszerű példa, de az absztrakció előnyei itt láthatók. A raktárkezelőnek nem kell megértenie az SQL-t vagy az eljárás belső működését. A teljesítmény szempontjából a tárolt eljárás csodákat tesz. Az SQL Server létrehoz egy végrehajtási tervet, majd újra felhasználja a megfelelő paraméterek csatlakoztatásával a végrehajtás idején.Most, hogy megtanulta a tárolt eljárások előnyeit, lépjen ki és használja őket.

Próbáljon ki néhány példát és mérje meg az elért teljesítménynöveléseket - csodálkozni fogsz!

Leltár táblázat

IDTermékRaktárMennyiség
142ZöldbabNY100
214borsóFL200
825KukoricaNY140
512Lima babNY180
491paradicsomFL80
379GörögdinnyeFL85