SQL Server uložené procedury

Uložené postupy přinášejí vysokou efektivitu a bezpečnostní výhody

Microsoft SQL Server poskytuje mechanismus uložené procedury pro zjednodušení procesu vývoje databáze tím, že seskupí příkazy Transact-SQL do spravovatelných bloků. Uložené procedury jsou oceňovány většinou vývojářů serveru SQL Server, kteří hledají efektivitu a bezpečnostní výhody, které prožívají.

Výhody použití uložených procedur

Proč by měl vývojář používat uložené procedury?

Zde jsou klíčové výhody této technologie:

Uložené procedury jsou podobné uživatelsky definovaným funkcím, ale existují jemné rozdíly.

Struktura

Uložené procedury jsou podobné konstrukcím v jiných programovacích jazycích.

Přijmou data ve formě vstupních parametrů, které jsou zadány v době provedení. Tyto vstupní parametry (pokud jsou implementovány) jsou využívány při provádění řady příkazů, které vytvářejí nějaký výsledek. Tento výsledek se vrací do volajícího prostředí pomocí sady záznamů, výstupních parametrů a návratového kódu.

To může znít jako ústa, ale zjistíte, že uložené procedury jsou vlastně poměrně jednoduché.

Příklad

Podívejme se na praktický příklad, který se týká tabulky s názvem inventář zobrazeného v dolní části této stránky. Tyto informace jsou aktualizovány v reálném čase a správci skladu neustále kontrolují úrovně produktů uložených v jejich skladu a jsou k dispozici k odeslání. V minulosti by každý správce spouštěl dotazy podobné následujícím:

SELECT produkt, množství
Z inventáře
WHERE Warehouse = 'FL'

To vedlo k neefektivnímu výkonu na serveru SQL Server. Pokaždé, když správce skladu spustil dotaz, byl databázový server nucen znovu zkompilovat dotaz a spustit ho od začátku. To také vyžadovalo, aby správce skladu měl znalosti o SQL a příslušná oprávnění k přístupu k informacím o tabulce.

Místo toho lze tento proces zjednodušit pomocí uložené procedury. Zde je kód pro postup s názvem sp_GetInventory, který načte úroveň zásob pro daný sklad.

CREATE POSTUP sp_GetInventory
@location varchar (10)
TAK JAKO
SELECT produkt, množství
Z inventáře
WHERE Warehouse = @location

Správce skladů ve Floridě pak může přistupovat k hladinám inventáře vydáním příkazu:

EXECUTE sp_GetInventory 'FL'

Správce skladů v New Yorku může použít stejnou uloženou proceduru pro přístup k inventářům této oblasti:

EXECUTE sp_GetInventory 'NY'

Je to jednoduchý příklad, ale přínos abstrakce je zde vidět. Správce skladů nemusí chápat SQL nebo vnitřní fungování procedury. Z pohledu výkonů se ukládá záchranná procedura. SQL Server vytvoří plán spouštění jednou a poté jej znovu použije připojením příslušných parametrů v době provedení.

Nyní, když jste se naučili výhody uložených procedur, vyjděte je a použijte je.

Vyzkoušejte několik příkladů a změřte dosažené zlepšení výkonu - budete ohromeni!

Tabulka zásob

ID Produkt Sklad Množství
142 Zelené fazole NY 100
214 Hrách FL 200
825 Kukuřice NY 140
512 Lima fazole NY 180
491 Rajčata FL 80
379 Vodní meloun FL 85