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. A floridai raktárkezelő a következő parancs kiadásával elérheti a készletszinteket: A New York-i raktárkezelő ugyanazt a tárolt eljárást alkalmazhatja a terület leltárának eléréséhez: 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ázatCREATE PROCEDURE sp_GetInventory@ helymegosztás varchar (10)MINTSELECT termék, mennyiségFROM InventoryWHERE Raktár = @ helymeghatározás
EXECUTE sp_GetInventory 'FL'
EXECUTE sp_GetInventory 'NY'
ID Termék Raktár Mennyiség 142 Zöldbab NY 100 214 borsó FL 200 825 Kukorica NY 140 512 Lima bab NY 180 491 paradicsom FL 80 379 Görögdinnye FL 85