29.11.2014 Views

Capitolul II Structurarea bazelor de date

Capitolul II Structurarea bazelor de date

Capitolul II Structurarea bazelor de date

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

36<br />

<strong>Capitolul</strong> IV<br />

Limbajul PL/SQL<br />

GeneralităŃi<br />

Limbajul SQL (Structured Query Language) este un limbaj <strong>de</strong>clarativ<br />

orientat pe obŃinerea <strong>de</strong> mulŃimi <strong>de</strong> selecŃie într-o aplicaŃie în arhitectură clientserver.<br />

EficienŃa sa este remarcabilă dar în cazul în care elementele unei mulŃimi<br />

<strong>de</strong> selecŃie trebuie accesate pe rând, nu în grup, utilizarea sa nu mai este<br />

posibilă. Pe <strong>de</strong> altă parte SQL nu oferă nici suportul necesar realizării interfeŃei<br />

unei aplicaŃii. În contrast cu SQL, limbajele procedurale pot manipula linii<br />

individuale dintr-o mulŃime <strong>de</strong> selecŃie. Ele dispun <strong>de</strong> funcŃii care permit trecerea<br />

<strong>de</strong> la o linie la alta şi ramificarea codului în funcŃie <strong>de</strong> rezultatul testării valorilor<br />

preluate din tabelele bazei <strong>de</strong> <strong>date</strong>.<br />

Limbajul PL/SQL (Procedural Language extensions to SQL) a fost<br />

<strong>de</strong>zvoltat <strong>de</strong> compania Oracle ca extensie a limbajului <strong>de</strong>clarativ SQL. PL/SQL<br />

este un limbaj <strong>de</strong> programare procedural care poate fi folosit pentru <strong>de</strong>scrierea<br />

unor prelucrări complexe sau pentru programarea unor secvenŃe <strong>de</strong> cod care<br />

trebuie executate automat la apariŃia unui eveniment (triggere).<br />

O caracteristică remarcabilă a limbajului PL/SQL este faptul că<br />

procedurile sau funcŃiile scrise vor fi memorate în baza <strong>de</strong> <strong>date</strong>. Aceleaşi<br />

prelucrări pot fi realizate <strong>de</strong> regulă şi în cadrul aplicaŃiilor client care accesează<br />

<strong>date</strong>le din bază, dar în cazul modificării unei meto<strong>de</strong> <strong>de</strong> calcul trebuie refăcute<br />

aplicaŃiile client afectate şi suportate toate costurile pe care le implică<br />

redistribuirea unor noi versiuni ale aplicaŃiilor client.<br />

Având în ve<strong>de</strong>re faptul că <strong>de</strong> multe ori aplicaŃiile din domeniul <strong>bazelor</strong> <strong>de</strong><br />

<strong>date</strong> sunt în arhitectură client-server şi aplicaŃia client accesează aplicaŃia server<br />

(Oracle XE) prin intermediul unei reŃele, utilizarea pe cât posibil a procedurilor<br />

scrise în PL/SQL poate ameliora semnificativ viteza <strong>de</strong> prelucrare. În cazul unei<br />

proceduri care ar implica transferul spre aplicaŃia client a unui volum mare <strong>de</strong><br />

<strong>date</strong> (rezultatul unei interogări <strong>de</strong> exemplu), întârzierile cauzate <strong>de</strong> reŃeaua prin<br />

care se accesează serverul <strong>de</strong> baze <strong>de</strong> <strong>date</strong> pot fi mari. Dacă prelucrarea <strong>date</strong>lor<br />

nu presupune afişarea acestora în aplicaŃia client, mult mai eficientă este soluŃia<br />

prelucrării <strong>date</strong>lor pe server, într-o procedură scrisă în PL/SQL.<br />

PL/SQL este bazat pe limbajul ADA, o parte dintre construcŃiile sale<br />

sintactice provenind din Pascal.<br />

Scrierea unui bloc anonim<br />

De regulă programarea în PL/SQL înseamnă <strong>de</strong>finirea unor proceduri sau<br />

funcŃii, în sensul pe care acestea le au în oricare dintre limbajele procedurale<br />

cunoscute. O procedură sau o funcŃie poate fi introdusă folosind fereastra SQL<br />

Plus sau folosind interfaŃa grafică, în SQL Command sau Script Editor.<br />

O succesiune <strong>de</strong> instrucŃiuni în PL/SQL care nu sunt <strong>de</strong>stinate <strong>de</strong>finirii<br />

unei funcŃii sau proceduri formează un bloc anonim care va fi executat doar o<br />

singură dată.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!