Skip to main content

Vytvoření uložených procedur pro SQL Server

SQL Server 1 - Intro to SQL Server (Smět 2025)

SQL Server 1 - Intro to SQL Server (Smět 2025)
Anonim

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:

  • Předkompilované provedení: SQL Server sestavuje každou uloženou proceduru jednou a poté znovu použije plán provádění. Výsledkem je obrovské zvýšení výkonu při opakovaném uložení uložených procedur.
  • Snížená návštěvnost klientů / serverů: Pokud je ve vašem prostředí problém s šířkou pásma sítě, rádi vám ukážeme, že uložené procedury mohou omezit dlouhé SQL dotazy na jediný řádek, který je přenášen přes drát.
  • Efektivní opětovné použití kódu a programování abstrakce: Uložené procedury mohou využívat více uživatelé a klientské programy. Pokud je využijete plánovaným způsobem, zjistíte, že vývojový cyklus trvá méně času.
  • Vylepšené ovládací prvky zabezpečení: Uživatelům můžete udělit oprávnění ke spuštění uložené procedury nezávisle na oprávněních tabulky.

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ářeWHERE 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 JAKOSELECT produkt, množstvíZ inventářeWHERE 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

IDProduktSkladMnožství
142Zelené fazoleNY100
214HráchFL200
825KukuřiceNY140
512Lima fazoleNY180
491RajčataFL80
379Vodní melounFL85