Există mai multe tipuri de proceduri stocate în SQL Server.
Procedurile stocate în sistem sunt concepute pentru a efectua diferite acțiuni administrative. Aproape toate activitățile de administrare a serverului sunt efectuate cu ajutorul lor. Putem spune că procedurile stocate în sistem sunt interfața care furnizează lucrul cu tabele de sistem, care, în cele din urmă, se reduce la schimbarea, adăugarea, ștergerea și recuperarea datelor din tabelele de sistem ale bazelor de date ale utilizatorilor și sistemelor. Procedurile stocate în sistem au prefixul sp_, sunt stocate în baza de date sistem și pot fi apelate în contextul oricărei alte baze de date.
Procedurile stocate personalizate implementează aceste sau alte acțiuni. Procedurile stocate reprezintă un obiect de bază complet al bazei de date. Din această cauză, fiecare procedură stocată este localizată într-o bază de date specifică, unde este executată.
Procedurile stocate temporar există doar o perioadă de timp, după care sunt distruse automat de server. Ele sunt împărțite la nivel local și global. Procedurile memorate temporar locale pot fi apelate numai din conexiunea în care sunt create. Când creați o astfel de procedură, trebuie să i se dea un nume începând cu un singur caracter. Ca toate obiectele temporare, procedurile stocate de acest tip sunt șterse automat atunci când utilizatorul este deconectat, repornit sau oprit. Procedurile globale stocate temporar sunt disponibile pentru toate conexiunile de server care au aceeași procedură. Pentru ao defini, este suficient să îi dați un nume începând cu ##. Aceste proceduri sunt șterse când serverul este repornit sau oprit și când conexiunea este închisă, în contextul în care a fost creat.
Creați, modificați și ștergeți procedurile memorate
Crearea unei proceduri stocate implică următoarele sarcini:
definirea tipului de procedură stocată care este creată: definită temporar sau definită de utilizator. În plus, vă puteți crea propria procedură stocată de sistem atribuindu-i un nume cu prefixul sp_ și plasându-l în baza de date a sistemului. Această procedură va fi disponibilă în contextul oricărei baze de date de pe serverul local;
planificarea drepturilor de acces. Atunci când creați o procedură stocată, trebuie să aveți în vedere că va avea aceleași drepturi de acces la obiectele bazei de date ca și utilizatorul care la creat;
definirea parametrilor de procedură stocată. Ca procedurile care fac parte din majoritatea limbajelor de programare, procedurile stocate pot avea parametri de intrare și ieșire;
elaborarea codului procedurii stocate. Codul procedurii poate conține o secvență de comenzi SQL, inclusiv apelarea altor proceduri stocate.
Creați o nouă procedură stocată și modificați-o folosind următoarea comandă: <определение_процедуры>:: =
[OUTPUT] | [DEFAULT]] [. n]
Dacă apelul la o procedură stocată nu este singura comandă din pachet, este necesară comanda EXECUTE. Mai mult, această comandă este necesară pentru a apela procedura din corpul unei alte proceduri sau declanșator. Utilizarea cuvântului cheie OUTPUT la apelarea unei proceduri este permisă numai pentru parametrii care au fost declarați atunci când procedura a fost creată cu cuvântul cheie OUTPUT. Când, atunci când se solicită o procedură pentru un parametru, este specificat cuvântul cheie DEFAULT, se va utiliza valoarea implicită. Firește, cuvântul specificat DEFAULT este permis numai pentru acei parametri pentru care valoarea implicită este definită. Din sintaxa comenzii EXECUTE, puteți vedea că numele parametrilor pot fi omise atunci când apelați procedura. Totuși, în acest caz, utilizatorul trebuie să specifice valorile parametrilor în aceeași ordine în care au fost enumerați la crearea procedurii. Atribuiți o valoare parametrului în mod prestabilit, pur și simplu omițându-l când îl enumerați. Dacă doriți să omiteți parametrii pentru care este definită o valoare implicită, este suficient să specificați explicit numele parametrilor atunci când apelați o procedură memorată. În plus, în acest fel este posibilă listarea parametrilor și a valorilor acestora într-o ordine arbitrară. Rețineți că atunci când apelați o procedură, specificați fie numele parametrilor cu valori, fie numai valorile fără un nume de parametru. Combinația lor nu este permisă.
Exemplul 1: Procedură fără parametri. Elaborați o procedură pentru obținerea denumirilor și a valorii bunurilor achiziționate de Ivanov. CREATE PROC my_proc1