1.    Introducere

 

§        PL/SQL (Procedural Language/SQL) este o extensie procedurala a limbajului SQL pentru SGBD Oracle (extensie proprietara).

§        Este datorata faptului ca limbajul SQL este un limbaj de cereri si nu un limbaj de programare.

§        Unitatea de executie este blocul care contine atat cereri SQL cat si instructiuni PL/SQL. Ele sunt executate astfel:

o      Cererile SQL sunt trimise pentru a fi executate de serverul Oracle

o      Instructiunile PL/SQL sunt executate de Executorul de Instructiuni Procedurale (Procedural Statement Executor) aflat in Motorul PL/SQL (PL/SQL Engine).

§        Motorul PL/SQL este prezent in:

o      Serverul Oracle

o      Unelte Oracle (Developer/2000 compus din Oracle Forms, Oracle Reports si Oracle Graphics) care contin propriul lor motor PL/SQL. Ele nu folosesc motorul PL/SQL integrat in serverul Oracle decat pentru portiunile de bloc reprezentand cereri SQL, minimizand astfel incarcarea serverului.

§        PL/SQL este folosit pentru a scrie:

o      Blocuri anonime (Anonymous blocks)

o      Proceduri si functii stocate (Stored procedures/functions)

o      Proceduri si functii folosite in aplicatii (Application procedures/functions)

o      Declansatori pentru baza de date (Database triggers)

o      Declansatori folositi in aplicatii (Application triggers)

o      Pachete (Packaged procedures)

 

 

1.1.  Avantajele PL/SQL

 

§        Integrare:

o      Prezenta motorului PL/SQL atat in serverul Oracle cat si in uneltele Oracle

o      Bibliotecile comune (shared libraries) cu proceduri si functii scrise in PL/SQL pot fi utilizate de toate aplicatiile dezvoltate cu Developer/2000 si pot fi accesate local sau la distanta.

o      Tipurile de date din SQL pot fi folosite si in PL/SQL.

o      In cazul uneltelor Oracle avand incorporat motor PL/SQL, executorul de instructiuni procedurale proceseaza date locale aplicatiei (client) reducand incarcarea serverului si necesarul de memorie pentru acesta.

 

 

§        Imbunatatirea performantelor:

o      Un bloc care poate contine mai multe instructiuni SQL este trimis o singura data serverului reducandu-se traficul pe retea.

o      Marirea performantelor uneltelor Oracle prin adaugarea facilitatilor procedurale ale PL/SQL.

o      Procedurile si functiile care fac parte din aplicatii dezvoltate cu Developer/2000 sunt diferite de cele stocate in baza de date desi au aceeasi structura. In acelasi timp aceste aplicatii pot folosi subprogramele stocate in baza de date gestionata de serverul Oracle.

§        Dezvoltare modulara a programelor:

o      Un program PL/SQL (PL/SQL unit) este format din unul sau mai multe blocuri – proceduri, functii si blocuri anonime. Un bloc poate contine in interiorul sau alte blocuri.

o      Un program complex poate fi divizat in module logice distincte implementate prin blocuri.

o      Codul reutilizabil PL/SQL poate fi memorat in librarii comune in cazul aplicatiilor Developer/2000 sau stocat pe server, in care caz poate fi folosit de orice aplicatie care interactioneaza cu baza de date Oracle.

§        Portabilitate:

o      Este acelasi pentru orice platforma Oracle, indiferent de sistemul de operare sau platforma hardware folosita.

o      Programele scrise in PL/SQL pot fi folosite in diverse medii (server, aplicatii).

§        Este procedural:

o      Se pot defini variabile, cursori, exceptii (tratarea erorilor). Variabilele pot fi scalare, referinta, compuse sau de tip obiect mare (large object - LOB). Acestea pot fi definite si dinamic pe baza structurii tabelelor din baza de date si a coloanelor acestora.

o      Exista instructiuni de decizie, cicluri, parcurgere (pentru liniile unui rezultat de cerere SQL de tip SELECT).

o      Permite tratarea erorilor aparute in executia cererilor SQL de catre serverul Oracle (erorile se numesc in acest context exceptii) prin rutine asociate diverselor tipuri de erori care pot apare.

o      Se pot declara de catre utilizator conditii suplimentare de eroare si asocia rutine de tratare.