PL/SQL – CONCEPTE GENERALE

 

Procedural Language/Structured Query Language (PL/SQL) este extensia procedurala a limbajului SQL.

PL/SQL este un limbaj de programare sofisticat care asigură accesarea datelor unei baze de date relaţionale orientate obiect şi permite gruparea unei mulţimi de comenzi într-un bloc unic de tratare a datelor. Programul este format din unul sau mai multe blocuri care pot conţine blocuri încuibărite.

PL/SQL include atât instrucţiuni SQL pentru manipularea datelor şi pentru gestiunea tranzacţiilor, cât şi instrucţiuni proprii. Limbajul combină construcţiile procedurale ale unui limbaj LG3 cu puterea şi flexibilitatea lui SQL (LG4).
Combinaţia a generat un limbaj puternic pentru modelarea aplicaţiilor complexe.

PL/SQL extinde SQL prin construcţii specifice limbajelor procedurale (definirea variabilelor, declararea tipurilor, utilizarea structurilor de control, implementarea procedurilor şi funcţiilor, introducerea tipurilor obiect şi metodelor
etc.). PL/SQL oferă posibilităţi moderne de tratare a informaţiei: încapsularea datelor, analiza specială a erorilor, mascarea informaţiei, orientarea obiect. Posibilităţile lui SQL sunt folosite pentru un acces rafinat la date, iar facilităţile oferite de PL/SQL sunt folosite pentru fluxul controlului procesării datelor.

Dintre funcţionalităţile limbajului PL/SQL care determină ca acesta să fie frecvent utilizat se remarcă următoarele facilităţi:

      • integrarea comenzilor SQL de bază;
      • integrarea cu server-ul Oracle şi cu utilitare Oracle;
      • oferirea unui suport pentru programarea orientată obiect;
      • asigurarea securităţii informaţiei;
      • definirea şi gestiunea blocurilor de instrucţiuni;
      • gestiunea variabilelor, constantelor şi a cursoarelor;
      • modularizarea programelor (subprograme, pachete);
      • implementarea şi utilizarea declanşatorilor;
      • utilizarea structurilor de control fundamentale;
      • detectarea şi gestiunea erorilor de execuţie şi a situaţiilor excepţionale;
      • dezvoltarea de aplicaţii Web

PL/SQL este o tehnologie utilizată de server-ul Oracle şi de anumite utilitare Oracle. Blocurile PL/SQL sunt transmise unui motor PL/SQL şi procesate (compilate şi executate) de acesta. Motorul PL/SQL poate să se afle pe server-ul Oracle sau într-un utilitar, iar utilizarea sa depinde de unde se invocă PL/SQL. Multe utilitare Oracle (inclusiv Developer/2000) au propriul lor motor PL/SQL care este independent de motorul prezent pe server-ul Oracle.

Blocurile PL/SQL pot fi executate pe staţia client fără interacţiune cu server-ul sau în întregime pe server. Când blocurile PL/SQL sunt referite dintr-un program PRO*, din iSQL*Plus, sau de către Server Manager, motorul PL/SQL de pe server-ul Oracle va procesa aceste blocuri. Acesta descompune blocul în instrucţiuni SQL şi le trimite executorului de instrucţiuni SQL (SQL Statement Executor) de pe server-ul Oracle. Fără PL/SQL, instrucţiunile SQL ar fi procesate separat, fiecare la un moment dat, fiecare implicând un apel la server-ul Oracle.

Restul comenzilor (procedurale) sunt procesate de către executorul instrucţiunilor procedurale (PSE – Procedural Statement Executor) care este în motorul PL/SQL. PSE poate procesa datele care sunt locale aplicaţiei, reducându-se astfel activitatea de transfer spre server-ul Oracle şi numărul de cursoare solicitate. În felul acesta, este necesar un singur transfer pentru a trimite blocul din aplicaţie către server.

O aplicaţie bază de date poate fi structurată în trei părţi:

  • interfaţa utilizator (utilizatorul introduce anumite informaţii şi obţine nişte rezultate în urma executării aplicaţiei);
  • aplicaţia logică efectivă;
  • baza de date.

Există două modele pentru proiectarea unei aplicaţii bază de date:

  • modelul client-server (two-tier);
  • modelul three-tier.

Multe dintre aplicaţiile baze de date sunt construite folosind modelul clasic client-server, descris succint anterior pentru PL/SQL. Modelul este caracterizat de cele două componente: client şi server. Client-ul mânuieşte interfaţa, iar server-ul conţine baza de date. Aplicaţia logică este scindată între client şi server. De remarcat această caracteristică fundamentală a modelului că aplicaţia comunică direct cu server-ul. Există un motor PL/SQL pe server, iar în anumite cazuri şi pe client.

Dacă motorul PL/SQL este pe server, atunci aplicaţia (care poate fi scrisă în Pro*C, JDBC, OCI sau alte limbaje) care rezidă pe client trimite cereri la un server de date. Cererile sunt rezolvate utilizând SQL. Diferite cereri SQL pot fi grupate
într-un bloc PL/SQL şi trimise ca o singură entitate server-ului.

Vom considera un scenariu în care există două motoare PL/SQL, unul pe staţia client (local) şi un motor PL/SQL pe server. De exemplu, un declanşator ce se execută pe staţia client şi care apelează un subprogram stocat în baza de date. În
acest caz, blocurile anonime sunt trimise motorului PL/SQL de pe staţia client, care procesează local comenzile procedurale. Comenzile neprocedurale din interiorul blocului sunt trimise executorului de instrucţiuni SQL de pe server. De asemenea, apelurile procedurilor care sunt stocate pe server sunt trimise tot motorului de pe server pentru procesare.



Web Analytics