CATEGORII DOCUMENTE |
Pl/sql -extensie SQL (tehnologie folosita de ORACLE)
permite comenzi de manipulare si interogare SQL in bloc
blocurile PL/SQL sunt procesate de motorul PL/SQL care poate fi rezident pe ORACLE SERVER /instrument de dezvoltare
tipurile de date din SQL pot fi folosite in PL/SQL
multe instrumente ORACLE(DEVOLOPER/2000) au propriul motor PL/SQL
Tipuri de blocuri PL/SQL:
bloc anonim (bloc anonim (fara nume), este declarat la punctul in aplicatie unde este executat)
triggere de aplicatii (DEVELOPER/2000)
triggere pe baza de date
functii/proceduri stocate
functii/proceduri de aplicatii
pachete de proceduri
Programarea in PL/SQL este modularizata.Un bloc PL/SQL are 3 componente:
DECLARE
variabile, cursori, exceptii
BEGIN
comenzi SQL
structuri de programare
EXCEPTION
actiuni ce se executa cand apare o exceptie, eroare
END;
blocul se termina cu (;)
se foloseste (/) pentru a lansa un bloc anonim in bufferul SQL
o eroare in PL/SQL este tratata ca o exceptie
Exemplu:
DECLARE
v_variabila varchar2(5);
BEGIN
SELECT coloana INTO variabila FROM tabela;
EXCEPTION
WHEN exceptie THEN actiune
END;
Blocuri Imbricate
BEGIN
<<eticheta bloc1>>
DECLARE
......
BEGIN
......
END bloc1;
END;
Subprograme (blocuri PL/SQL care au nume ), pot fi proceduri /functii. Se pot stoca la nivel de ORACLE SERVER( proceduri/functii stocate) sau de aplicatie (DEVELOPER/2000)
PROCEDURE nume_procedura
IS
BEGIN
[EXCEPTION]
END;
FUNCTION nume_functie
RETURN tip_data
IS
BEGIN
RETURN valoare
[EXCEPTION]
END;
Pachete de programe (grupeaza proceduri, functii)
Triggere pe baza de date( bloc PL/SQL asociat cu o tabela si lansat in executie cand are loc o comanda de manipulare)
Triggere de aplicatie (bloc PL/SQL asociat cu un eveniment din aplicatie, de exemplu deplasare mouse, apasarea unui buton )
VARIABILE
declararea si initializarea in zona declarativa
se pot initializa si in zona de executie
toate variabilele PL/SQL au un tip de data, restrictii si sir valid de valori
nume_variabila [CONSTANT] TIP_DATA [NO NULL] [:=|DEFAULT expresie]
constantele trebuie initializate
variabilele not null trebuie initializate
se foloseste urmatoarea conventie:
c_numeconstanta
v_nume
g_nume (variabila globala definita in zona de specificatii a pachetului de programe si valabila pentru toate subprogramele pachetului)
Exemple:
DECLARE
v_sal constant real:=50000;
v_datai date;
g_codf varchar2(5) not null:='R209';
v_datai :=to_date ('15-SEP-99','DD-MON-YY');
g_datai date default sysdate;
g_codsef number(4) default 7839;
BEGIN
SELECT coloana1 INTO v_datai FROM tabela;
SELECT pu*1.1 INTO v_punou FROM produse WHERE codp='D209';
END;
TIPURI DE VARIABILE
varchar2 (lung_max)
number (precizie,scala)
data
char (lung_max)
long [sir de caractere de lungime variabila 2GB]
boolean (true, false, null)
binary_integer (numereiintregi intre -2147483647 si 2147483647)
real , etc
Exemple:
v_functie varchar2(9);
v_numar binary_integer:=0;
v_totalsal number(9,2):=0;
v_datai data:=sysdate+7;
c_taxa constant number(3,2):=8.25;
v_valid boolean not null:=true;
ATRIBUTUL %TYPE
exemple:
v_denc clienti.denc%type;
v_stoc number(5);
v_stocmin v_stoc%type:=1000;
VARIABILE DE HOST (ALE APLICATIILOR GAZDA)
:host_variabila:=v_sal;
Sa se afiseze mesajul "BLOC PL/SQL"
variable g_mesaj varchar2(30)
begin
:g_mesaj:='BLOC PL/SQL';
end;
print g_mesaj
Sa se afiseze sirul de caractere "SEMINAR13" si subsirul "13"
Functiile SQL sunt valabile in PL/SQL (numerice, caracter, data, de conversie, alte functii). Nu sunt valabile (greatest, least, decode, avg, min, max, count, sum, stddev)
PL/SQL converteste tipurile de date dinamic (exemplu daca se da o valoare numerica la o variabila char)
Se pot imbrica blocuri.Zona de exceptie poate contine blocuri imbricate
Sa se calculeze suma a doua numere iar rezultatul sa se divida cu 3. Numerele se vor introduce de la tastatura
variable v_rezultat number
accept p_num1 prompt 'Introduceti primul numar:'
accept p_num2 prompt 'Introduceti al doilea numar:'
declare
v_num1 number(9,2):=&p_num1;
v_num2 number(9,2):=&p_num2;
begin
:v_rezultat:=(v_num1+v_num2)*3;
end;
print v_rezultat
Sa se afiseze salariul marit cu un procent. Salariul si procentul se dau de la tastatura
accept p_sal prompt 'Introduceti salariul:'
accept p_procent prompt 'Introduceti procentul:'
declare
v_sal number:=&p_sal;
v_procent number:=&p_procent;
begin
dbms_output.put_line(to_char(nvl(v_sal,0)*(1+nvl(v_procent,0)/100)));
end;
PL/SQL suporta toate comenzile din limbajul de manipulare si control al tranzactiilor
un bloc PL/SQL nu e o tranzactie. Commit/ Rollback/ Savepoint sunt independente de bloc dar pot sa apara in bloc
PL/SQL nu suporta comanzi DDL/DCL
se foloseste clauza INTO (SELECT) pentru a popula variabile PL/SQL sau variabile host
cererile trebuie sa intoarca un singur rand (altfel se genereaza o eroare)
comenzile SQL se termina cu (;)
Sa se incarce in doua variabile valorile pentru data incheierii si termen de livrare pentru un anumit contract si sa se afiseze . Codul contractului se da de la tastatura
accept p_cod prompt 'Introduceti codul contractului:'
declare
v_datai contracte.datai%type;
v_termen contracte.termen%type;
v_cod contracte.codc%type;
begin
select codc, datai, termen into v_cod, v_datai, v_termen from contracte where codc=&p_cod;
dbms_output.put_line ('Contractul '|| v_cod|| 's-a incheiat la:'|| v_datai ||'si are termen de livrare|| v_termen
end;
se pot folosi functii de grup in SELECT;
Sa se modifice valoarea unui contract .Codul contractului si valoarea cu care se modifica se da de la tastatura
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1064
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved