Oracle PL/SQL je dinamičan, robustan programski jezik koji nudi moderne funkcije za razvoj efikasnih i glatkih aplikacija. Često upoređivan sa Microsoftovim T-SQL-om, PL/SQL dodaje procedure i funkcije standardnom SQL-u, poboljšavajući mogućnosti aplikacija baza podataka. S obzirom na njegovu snagu obrade transakcija, idealan je izbor za izvršavanje složenih izračuna i manipulaciju velikim brojem podataka.
Pregled PL/SQL-a
PL/SQL je proceduralna ekstenzija SQL-a, koja stvara prirodno, efikasno i sigurno programsko okruženje. U potpunosti podržava manipulaciju SQL podacima i poboljšava je omogućavajući sačuvane procedure i funkcije, bolje rukovanje greškama i robusne standarde koji obično nisu dostupni u SQL-u.
PL/SQL je blokovski strukturiran, a svaki anonimni blok ili potprogram ima opcionalni odjeljak za deklaraciju gdje se deklariraju sve varijable, kursori, korisnički definirani izuzeci i potprogrami. Nadalje, budući da je PL/SQL proceduralni jezik, podržava iteraciju, uvjetno grananje i omogućava ponovnu upotrebu putem korisnički definiranih potprograma.
Rješavanje problema sa PL/SQL
Ovdje ćemo napisati PL/SQL blok koji rješava uobičajeni problem: dohvaćanje informacija iz tablica baze podataka s mogućim izuzecima.
Prvo, moramo deklarirati varijable koje će držati podatke preuzete iz baze podataka. U PL/SQL-u deklariramo varijable u deklaracijskom dijelu bloka.
DECLARE l_name employees.last_name%TYPE; l_salary employees.salary%TYPE; l_emp_id employees.employee_id%TYPE := &Emp_Id; BEGIN ...
Glavna radnja se dešava u sekciji za izvršavanje:
...
BEGIN
SELECT last_name, salary
INTO l_name, l_salary
FROM employees
WHERE employee_id = l_emp_id;
DBMS_OUTPUT.PUT_LINE('Name: ' || l_name);
DBMS_OUTPUT.PUT_LINE('Salary: ' || l_salary);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No employee found with ID: ' || l_emp_id);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error occurred: ' || SQLCODE || ' - ' || SQLERRM);
END;
Važnost rukovanja greškama
Učinkovito rukovanje greškama u PL/SQL aplikacijama može pomoći značajno smanjiti vrijeme otklanjanja grešaka i poboljšati robusnost aplikacije.
U gornjoj skripti obradili smo mogućnost izuzetka (greške). Ako navedeni ID zaposlenika ne postoji – izraz SELECT INTO podiže izuzetak NO_DATA_FOUND. Ako se pokrene bilo koji drugi izuzetak, hvata ga rukovalac OTHERS.
Ovaj oblik obrade izuzetaka je odličan primjer robusnosti i sposobnosti PL/SQL-a u upravljanju tokom kontrole aplikacije.
PL/SQL biblioteke i paketi
PL/SQL omogućava korištenje unaprijed definiranih SQL paketa koji pomažu u rješavanju uobičajenih problema. Na primjer, paket DBMS_OUTPUT je korišten u prethodnom primjeru za ispis podataka u konzolu.
Postoji mnogo više sličnih paketa kao što su DBMS_SQL (dinamički SQL), UTL_FILE (rukovanje fajlovima na strani servera), UTL_MAIL (slanje e-pošte sa PL/SQL) itd. Ovi paketi, u kombinaciji sa jakim karakteristikama proceduralnog jezika PL/SQL, nude robusne mogućnosti za razvoj moćnih aplikacija baza podataka.
Prednosti PL/SQL
Neke ključne prednosti PL/SQL-a uključuju njegovu podršku za SQL, njegovu prenosivost, sigurnost i odlične performanse. Zbog njegove bliske integracije sa SQL-om, možete koristiti sve SQL tipove podataka i sve SQL funkcije i operatore.
Poboljšava produktivnost pružanjem naprednih funkcija kao što su rukovanje izuzetcima, enkapsulacija, skrivanje podataka i nasljeđivanje. PL/SQL također podržava kursore, koji su imenovani memorijska područja za manipuliranje izlazom složenih SQL upita.
Uz PL/SQL, možete zaštititi svoje podatke od neovlaštenih korisnika implementacijom jakih sigurnosnih politika. Takođe ima podršku za statički i dinamički SQL, dodatno povećavajući njegovu sposobnost.
PL/SQL također nudi odlične performanse dozvoljavajući spajanje SQL izraza u jedan blok koji se može poslati poslužitelju baze podataka u jednom pozivu. Ovo smanjuje mrežni promet i povećava brzinu izvršavanja aplikacije.
