§
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)
§
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.