Microsoft SQL Server osigurava mehanizam pohranjene procedure kako bi se pojednostavio proces razvoja baze podataka grupiranjem Transact-SQL izjava u blokove koji se mogu upravljati. Pohranjene procedure poštuju većina razvojnih programera sustava SQL Server koji otkrivaju učinkovitost i sigurnosne prednosti koje žele dobro isplati unaprijed ulaganju u vremenu.
Prednosti korištenja pohranjenih postupaka
Zašto programer treba koristiti pohranjene procedure?
Ovdje su ključne prednosti ove tehnologije:
- Pretvorena izvođenje: SQL Server sastavlja svaku pohranjenu proceduru jednom, a zatim ponovno koristi plan izvršenja. To rezultira ogromnim poboljšanjem performansi kada se pohranjene procedure ponovno pozivaju.
- Smanjeni promet klijenta / poslužitelja: Ako je širina mreže širi u vašem okruženju, rado ćete saznati da pohranjene procedure mogu smanjiti dugo SQL upite na jednu liniju koja se prenosi preko žice.
- Učinkovita ponovna upotreba koda i apstrakcija programiranja: Pohranjene procedure mogu koristiti više korisnika i klijentskih programa. Ako ih iskoristite na planirani način, vidjet ćete da razvojni ciklus traje manje vremena.
- Poboljšane sigurnosne kontrole: Možete dozvoliti korisnicima dozvolu za izvršavanje pohranjene procedure neovisno o dopuštenim tabličnim dozvolama.
Pohranjeni postupci slični su korisnički definiranim funkcijama, ali postoje suptilne razlike.
Struktura
Pohranjene procedure slične su konstrukcijama koje se vide na drugim programskim jezicima.
Oni prihvaćaju podatke u obliku ulaznih parametara koji su navedeni u vrijeme izvršenja. Ovi ulazni parametri (ako su implementirani) koriste se u izvođenju niza tvrdnji koje donose neki rezultat. Ovaj rezultat se vraća u pozivnu okolinu pomoću zapisa, izlaznih parametara i povratnog koda.
To može zvučati kao zalogaj, ali naći ćete da su pohranjene procedure zapravo prilično jednostavne.
Primjer
Pogledajmo praktičan primjer vezan uz tablicu s nazivom oglasnog prostora prikazanog na dnu ove stranice. Te se informacije ažuriraju u stvarnom vremenu, a upravitelji skladišta stalno provjeravaju razinu proizvoda pohranjenih u njihovom skladištu i dostupni su za otpremu. U prošlosti bi svaki upravitelj pokrenuo upite slične sljedećem:
SELECT proizvod, količinaIz inventaraWHERE Warehouse = 'FL'
To je rezultiralo neučinkovitom izvedbom na SQL Serveru. Svaki put kada je upravitelj skladišta izvršio upite, poslužitelj baze podataka bio je prisiljen recompile upita i izvršiti ga od nule. Također je zahtijevao da menadžer skladišta ima znanje o SQL i odgovarajućim dozvolama za pristup informacijama o tablici.Umjesto toga, postupak se može pojednostaviti upotrebom pohranjene procedure. Evo koda za postupak nazvan sp_GetInventory koji dohvaća razine oglasnog prostora za određeno skladište. Florida upravitelj skladišta može pristupiti razinama zaliha izdavanjem naredbe: Upravitelj skladišta u New Yorku može koristiti istu pohranjenu proceduru za pristup inventaru tog područja: To je jednostavan primjer, ali prednosti apstrakcije mogu se vidjeti ovdje. Upravitelj skladišta ne mora razumjeti SQL ili unutarnje funkcioniranje postupka. Iz perspektive izvedbe, pohranjena procedura radi čuda. SQL Server stvara plan izvršenja jednom, a zatim ga ponovno upotrebljava priključivanjem odgovarajućih parametara u vrijeme izvršenja.Sada kada ste naučili prednosti pohranjenih postupaka, izađite tamo i koristite ih. Isprobajte nekoliko primjera i izmjerite postignute poboljšanja izvedbe - zapanjit ćete se! Tablica oglasnog prostoraCREATE PROCEDURE sp_GetInventory(10)KAOSELECT proizvod, količinaIz inventaraWHERE Warehouse = @ lokacija
EXECUTE sp_GetInventory 'FL'
EXECUTE sp_GetInventory 'NY'
iskaznica Proizvod Skladište Količina 142 Zeleni grah NY 100 214 Grašak Florida 200 825 Kukuruz NY 140 512 Lima grah NY 180 491 rajčice Florida 80 379 Lubenica Florida 85