Microsoft SQL Server poskytuje mechanizmus uloženej procedúry na zjednodušenie procesu vývoja databázy zoskupením príkazov Transact-SQL do zvládnuteľných blokov. Uložené procedúry sú oceňované väčšinou developerov serverov SQL Server, ktorí zistili, že výhody a efektívne výhody, ktoré prinášajú, stojí za to vopred.
Výhody používania uložených procedúr
Prečo by mal vývojár používať uložené procedúry?
Tu sú kľúčové výhody tejto technológie:
- Predkompilované prevedenie: SQL Server raz kompiluje každú uloženú procedúru a potom znova využíva plán vykonávania. To vedie k obrovskému zvýšeniu výkonu, keď sa opakovane nazývajú uložené procedúry.
- Znížená návštevnosť klient / server: Ak je sieťová šírka vo vašom prostredí znepokojená, radi sa dozviete, že uložené procedúry môžu obmedziť dlhé SQL dotazy na jeden riadok, ktorý sa prenáša cez kábel.
- Efektívne opätovné využitie abstrahovania kódu a programovania: Uložené procedúry môžu používať viacerí používatelia a klientske programy. Ak ich využijete plánovane, zistíte, že vývojový cyklus trvá menej času.
- Vylepšené ovládacie prvky zabezpečenia: Môžete používateľom udeliť povolenie na vykonanie uloženej procedúry nezávisle od základných oprávnení tabuľky.
Uložené procedúry sú podobné používateľom definovaným funkciám, existujú však jemné rozdiely.
štruktúra
Uložené procedúry sú podobné konštrukciám zobrazeným v iných programovacích jazykoch.
Prijímajú údaje vo forme vstupných parametrov, ktoré sú špecifikované v čase realizácie. Tieto vstupné parametre (ak sú implementované) sa využívajú pri vykonávaní série vyhlásení, ktoré prinášajú určitý výsledok. Tento výsledok sa vráti do volajúceho prostredia pomocou súborov záznamov, výstupných parametrov a návratového kódu.
To môže znieť ako huba, ale zistíte, že uložené procedúry sú vlastne celkom jednoduché.
príklad
Poďme sa pozrieť na praktický príklad súvisiaci s tabuľkou nazvanou inventár zobrazenou v spodnej časti tejto stránky. Tieto informácie sa aktualizujú v reálnom čase a správcovia skladu neustále kontrolujú úrovne produktov uložených v ich sklade a sú k dispozícii na odoslanie. V minulosti by každý manažér mohol spúšťať dopyty podobné nasledujúcim:
VÝBER produktu, množstvoZ inventáraWHERE sklad = 'FL'
To viedlo k neefektívnemu výkonu na serveri SQL Server. Pokaždé, keď manažér skladu vykonal dotaz, bol databázový server nútený prekompilovať dotaz a spustiť ho od začiatku. Vyžadovalo tiež, aby správca skladu vedel o znalosti SQL a príslušných povoleniach na prístup k informáciám o tabuľke.Namiesto toho môže byť proces zjednodušený pomocou uloženej procedúry. Tu je kód pre postup s názvom sp_GetInventory, ktorý načíta hladiny zásob pre daný sklad. Správca skladov v štáte Florida môže potom pristupovať k hladinám zásob pomocou príkazu: Manažér skladov v New Yorku môže použiť rovnakú uloženú procedúru na prístup k inventáru tejto oblasti: Toto je jednoduchý príklad, ale tu vidíme výhody abstrakcie. Správca skladu nemusí chápať SQL alebo vnútorné fungovanie postupu. Z hľadiska výkonnosti je uložená procedúra zázračná. SQL Server raz a potom znovu použije plán spúšťania pripojením príslušných parametrov v čase vykonania.Teraz, keď ste sa naučili výhody uložených procedúr, odistite sa a použite ich. Vyskúšajte niekoľko príkladov a zmerajte dosiahnuté vylepšenia - budete ohromení! Tabuľka zásobCREATE POSTUP sp_GetInventory@location varchar (10)ASVÝBER produktu, množstvoZ inventáraKDE SKLADAŤ = @ umiestnenie
EXECUTE sp_GetInventory 'FL'
EXECUTE sp_GetInventory 'NY'
ID výrobok sklad množstvo 142 Zelené fazule NY 100 214 Hrach FL 200 825 kukurica NY 140 512 Lima fazuľa NY 180 491 paradajky FL 80 379 vodný melón FL 85