Procedurile stocate de SQL Server

Procedurile stocate oferă avantaje înalte de eficiență și securitate

Microsoft SQL Server oferă mecanismul procedurii stocate pentru a simplifica procesul de dezvoltare a bazei de date prin gruparea instrucțiunilor Transact-SQL în blocuri administrabile. Procedurile stocate sunt apreciate de majoritatea dezvoltatorilor de servere SQL care descoperă că beneficiile de eficiență și securitate pe care le culeagă merită investiția în timp util.

Beneficiile utilizării procedurilor stocate

De ce ar trebui un dezvoltator să folosească procedurile stocate?

Iată avantajele cheie ale acestei tehnologii:

Procedurile stocate sunt similare cu funcțiile definite de utilizator, dar există diferențe subtile.

Structura

Procedurile stocate sunt similare cu construcțiile văzute în alte limbi de programare.

Ele acceptă date sub formă de parametri de intrare specificați la timpul de execuție. Acești parametri de intrare (dacă sunt implementați) sunt utilizați în execuția unei serii de instrucțiuni care produc un rezultat. Acest rezultat este returnat mediului de apel prin utilizarea unei seturi de înregistrări, a parametrilor de ieșire și a unui cod de returnare.

Acest lucru poate părea o gură, dar veți descoperi că procedurile stocate sunt de fapt destul de simple.

Exemplu

Să aruncăm o privire la un exemplu practic referitor la tabelul numit inventar afișat în partea de jos a acestei pagini. Aceste informații sunt actualizate în timp real, iar administratorii depozitului verifică în mod constant nivelurile produselor stocate în depozitul lor și sunt disponibile pentru expediere. În trecut, fiecare manager va rula întrebări similare cu următoarele:

SELECT Produs, Cantitate
Din inventar
WHERE Depozit = 'FL'

Acest lucru a dus la o performanță ineficientă la SQL Server. De fiecare dată când un manager de depozit a executat interogarea, serverul de bază de date a fost forțat să recompileze interogarea și să o execute de la zero. De asemenea, este necesar ca managerul depozitului să aibă cunoștințe despre SQL și permisiuni corespunzătoare pentru a accesa informațiile din tabel.

În schimb, procesul poate fi simplificat prin utilizarea unei proceduri stocate. Iată codul pentru o procedură numită sp_GetInventory care preia nivelurile de inventar pentru un depozit dat.

CREATE PROCEDURE sp_GetInventory
@location varchar (10)
LA FEL DE
SELECT Produs, Cantitate
Din inventar
WHERE Warehouse = @ locație

Managerul depozitului din Florida poate accesa nivelurile de inventar prin emiterea comenzii:

EXECUTE sp_GetInventory 'FL'

Managerul de depozit din New York poate folosi aceeași procedură stocată pentru a accesa inventarul din zona respectivă:

EXECUTE sp_GetInventory 'NY'

Acordat, acesta este un exemplu simplu, dar beneficiile abstractizării pot fi văzute aici. Managerul depozitului nu are nevoie să înțeleagă SQL sau funcționarea interioară a procedurii. Din perspectiva performanței, procedura stocată funcționează minunat. SQL Server creează un plan de execuție o dată și apoi îl re-utilizează prin conectarea parametrilor corespunzători la timpul de execuție.

Acum, că ați învățat beneficiile procedurilor stocate, ieșiți acolo și folosiți-le.

Încercați câteva exemple și măsurați îmbunătățirile de performanță obținute - veți fi uimiți!

Tabelul de inventar

ID - ul Produs Depozit Cantitate
142 Fasole verde NY 100
214 mazăre FL 200
825 Porumb NY 140
512 fasole Lima NY 180
491 roșii FL 80
379 Pepene FL 85