Skip to main content

Vytvorenie uložených procedúr pre váš SQL Server

Anonim

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.

CREATE POSTUP sp_GetInventory@location varchar (10)ASVÝBER produktu, množstvoZ inventáraKDE SKLADAŤ = @ umiestnenie

Správca skladov v štáte Florida môže potom pristupovať k hladinám zásob pomocou príkazu:

EXECUTE sp_GetInventory 'FL'

Manažér skladov v New Yorku môže použiť rovnakú uloženú procedúru na prístup k inventáru tejto oblasti:

EXECUTE sp_GetInventory 'NY'

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ásob

IDvýrobokskladmnožstvo
142Zelené fazuleNY100
214HrachFL200
825kukuricaNY140
512Lima fazuľaNY180
491paradajkyFL80
379vodný melónFL85