Procedură stocată
Această intrare sau secțiune despre bazele de date subiect nu menționează sursele necesare sau cei prezenți sunt insuficienți . |
O procedură stocată este un program scris în SQL sau în alte limbi, păstrat în baza de date însăși, stocat în așa-numitul dicționar de date al bazei de date . Acesta este adesea scris în versiuni de proprietate ale SQL, care sunt limbi reale structurate, cum ar fi PostgreSQL PL / pgSQL sau Oracle PL / SQL , în care codul SQL pot fi scrise. În general, în funcție de caracteristicile lor, se disting diferite tipuri de subrutine:
Funcții | returnează o singură valoare pe lângă acceptarea parametrilor de intrare și / sau ieșire |
Proceduri | nu returnează valori, dar acceptă parametrii de intrare și / sau de ieșire |
Declanșator | sunt declanșate de evenimente |
În general, SGBD compilează procedurile stocate, ceea ce înseamnă că le optimizează și stabilește planul de execuție a interogării.
Unele SGBD vă permit să criptați procedurile stocate. Această practică este utilizată de producătorii de software pentru a se asigura că clientul nu le poate citi. Acest mod de distribuire a software-ului se numește sursă închisă , al cărui cod trebuie să rămână secret pentru a preveni studierea sau modificarea acestuia.
Avantaje și dezavantaje
Principalele avantaje ale utilizării procedurilor stocate sunt următoarele:
- Procedura stocată împiedică clientul să rescrie interogări complexe oferind posibilitatea de a invoca o procedură stocată în baza de date.
- În consecință, numărul de informații care vor fi schimbate între client și server va fi, de asemenea, mai mic în beneficiul performanței.
- Deoarece acestea sunt limbaje structurate, devin posibile elaborări complexe care nu sunt altfel realizabile folosind numai interogări SQL.
- Compilarea unei proceduri stocate are loc o singură dată, când este inserată. De fiecare dată când procedura este apelată, aceasta este pur și simplu executată și acest lucru crește semnificativ performanța.
- Utilizarea procedurilor stocate vă permite să mențineți biblioteci de funcții pentru a fi utilizate în baza de date. Potențial ați putea efectua fiecare operațiune apelând o procedură diferită, fără a cunoaște structura unei baze de date posibil complexe sau având cunoștințe limitate despre aceasta.
- Tocmai din acest motiv, DBA poate uneori să evite acordarea de permisiuni de modificare sau citire pe mai multe tabele anumitor utilizatori, acordând pur și simplu permisiunea de a executa procedurile stocate.
Principalele dezavantaje sunt următoarele:
- Procedurile stocate măresc volumul de lucru pentru server.
- Uneori nu puteți utiliza limba pe care doriți să o utilizați, deoarece SGBD nu o acceptă.
- Logica programului este mutată pe server; acest lucru nu este neapărat un dezavantaj, dar nu este compatibil cu modelul logic al aplicațiilor pe trei niveluri.
Limbi
Limbile care pot fi utilizate pentru scrierea procedurilor stocate sunt multe și depind de SGBD utilizat. Cele mai populare sunt cu siguranță Java și C / C ++ . SGBD oferă, de asemenea, versiuni structurate ale SQL, astfel încât să poată fi utilizat pentru a scrie proceduri care conțin condiții și bucle. Cele mai faimoase sunt:
- PL / pgSQL ( PostgreSQL )
- PL / SQL ( Oracle )
- SQL PL ( DB2 )
- Transact-SQL ( SQL Server )
- MySQL
Extensii SQL procedurale
Deși standardul SQL: 2003 include mai multe construcții care fac din SQL un limbaj procedural, DBMS-urile care implementează proceduri stocate tind să folosească extensii specifice sau se bazează pe implementări populare mai degrabă decât pe standard. La aceasta se adaugă faptul că SGBD mai ușoare nu implementează deloc proceduri stocate sau alte tipuri de rutine. Din aceste motive, constructele procedurale fac parte din SQL care este cel mai supus variației atunci când se trece de la un dialect la altul.
Extensiile SQL procedurale includ:
- construcții de control al debitului ;
- control condiționat;
- cicluri ;
- glisoare ;
- eroare de manipulare.