Documente Academic
Documente Profesional
Documente Cultură
Politehnica
Bucureti
Facultatea de
Automatic i
Calculatoare
Catedra de
Calculatoare
Laborator 1
Blocuri de instruciuni PL/SQL
Autori:
Conf. Dr. Ing. Alexandru Boicea
As. Drd. Ing. Ciprian-Octavian Truic
Cuprins
Introducere n PL/SQL
Blocuri de instruciuni PL/SQL
Blocuri anonime
Blocuri nlnuite
Blocuri imbricate
03.10.2015
Laborator 1
Introducere n PL/SQL
PL/SQL este un limbaj structurat pe blocuri
Are caracteristici de procesare procedural i
de tratare a erorilor
Blocurile pot fi de dou tipuri:
Blocuri anonime
Subprograme(proceduri, funcii sau triggere)
03.10.2015
Laborator 1
Blocuri anonime
Blocul anonim are cea mai simpl structur i
este compus din trei pri:
Declare conine definirea tuturor variabilelor
care vor fi folosite n procesul de execuie
Execuie conine instruciuni DML i bucle de
execuie
Excepii conine rutinele de interceptare i
tratare a erorilor
03.10.2015
Laborator 1
Blocuri anonime
Fiecare bloc ncepe cu unul dintre cuvintele
cheie declare sau begin
Cuvntul begin este punctul de nceput al
blocului
nainte de executarea unui bloc se golete
bafferul SQL
03.10.2015
Laborator 1
Blocuri anonime
Structura logic a unui bloc PL/SQL anonim
este:
DECLARE
Seciune pentru declararea de variabile
BEGIN
Seciune pentru instruciuni
EXCEPTION
Seciune pentru interceptarea i tratarea erorilor
END;
03.10.2015
Laborator 1
Blocuri anonime
Ex. 1. S se selecteze numele angajatului cu
id-ul 7839.
03.10.2015
Laborator 1
Blocuri anonime
Obs. Pentru a afia mesaje n SQL*Plus i SQL
Developer se va folosi comanda:
set serveroutput on;
Obs. Funcia care afieaz mesaje n SQL*Plus
i SQL Developer este:
dbms_output.put_line(string);
Concatenarea irurilor de caractere se face
folosind operatorul ||:
Numele angajatului este ||nume
03.10.2015
Laborator 1
Blocuri anonime
Obs. Pentru a folosi select ntr-un bloc se va
folosi o structur de forma:
SELECT COLOANA1, COLOANA2,. INTO
VARIABILA1, VARIABILA2 FROM TABEL1,
Variabilele sunt declarate n seciunea declare
03.10.2015
Laborator 1
Blocuri anonime
Ex. 2. S se insereze un nou angajat cu id-ul
1234, numele Georgescu, funcia Clerk, salariu
1250 i managerul cu id-ul 7566.
03.10.2015
Laborator 1
10
Blocuri nlnuite
Blocurile anonime pot fi nlnuite;
Execuia se face secvenial;
Declararea variabilelor pentru toate blocurile
nlnuite se face o singur data n seciunea
DECLARE.
03.10.2015
Laborator 1
11
Blocuri nlnuite
Structura logic pentru un bloc nlnuit este:
DECLARE variabile bloc 1 i bloc 2
BEGIN
BEGIN blocul 1
EXEPTION interceptarea i tratarea excepiilor bloc 1
END; sfrit bloc 1
BEGIN bloc 2
EXCEPTION interceptarea i tratarea excepiilor bloc 2
END; sfrit bloc 2
END;
03.10.2015
Laborator 1
12
Blocuri nlnuite
Ex. 3. S se insereze un nou angajat cu id-ul
1235 introdus de la tastatura, numele Ionescu,
funcia Analyst. Dup insert s se adauge
pentru acest angajat un comision de 200.
03.10.2015
Laborator 1
13
Blocuri nlnuite
03.10.2015
Laborator 1
14
Blocuri nlnuite
Obs. Pentru a da o variabil de la tastatur se
folosete &;
n exemplul de mai sus:
ecuson emp.empno%type := &empid
Obs. tiind c variabila ecuson va trebui s fie
de acelai tip precum coloana empno din
tabelul emp, am folosit tipul de variabil
corelat %type.
03.10.2015
Laborator 1
15
Blocuri imbricate
03.10.2015
Laborator 1
16
Blocuri imbricate
Laborator 1
17
Blocuri imbricate
03.10.2015
Laborator 1
18
Blocuri imbricate
03.10.2015
Laborator 1
19
Blocuri Imbricate
Observatii:
Comentariile pe mai multe linii se delimiteaz cu
/* ..... */
Comentariile pe o singur linie se marcheaz cu
dou linii orizontale - Primul bloc face o inregistrare folosind variabile
de substituire (&&ecuson);
Al doilea bloc folosete variabila substituit
ecuson (&ecuson) definit n primul bloc.
03.10.2015
Laborator 1
20
03.10.2015
Laborator 1
21
Abreviere
Utilizare
APPEND text
A text
CHANGE
C/old/new
CHANGE
C/text/
CLEAR BUFFER
CL BUFF
DELETE
DEL
INPUT
INPUT text
I text
LIST
LIST n
Ln
LIST m,n
L m,n
RUN
03.10.2015
Laborator 1
22
Laborator 1
23
03.10.2015
Laborator 1
24
Utilizare
set lines n
set pages n
03.10.2015
Laborator 1
25
Exemple
Pentru urmtoarele exerciii se va crea nc un
tabel numit mesaje:
03.10.2015
Laborator 1
26
Exemple
Ex. 5. n exemplul urmtor se prezint un bloc
PL/SQL care face o verificare a numrului de
angajai din anul 1992. Dac nu exist nicio
angajare, se va declana o excepie
no_data_found i se va insera n tabela
mesaje, mesajul numrul 1, iar dac sunt mai
muli angajai, se va declana excepia;
too_many_rows i se va insera mesajul
numrul 2.
03.10.2015
Laborator 1
27
Exemple
Laborator 1
28
Exemple
Ex. 6. n exemplul de mai jos se folosesc dou blocuri
imbricate care afieaz numele, data angajrii i comisionul
unui angajat introducnd id-ul angajatului i id-ul
departamentului de la tastatur.
03.10.2015
Laborator 1
29
Exemple
03.10.2015
Laborator 1
30
Exemple
Ex. 7. n urmtorul exerciiu vom edita un
fiier ex7.sql care conine un bloc PL/SQL.
03.10.2015
Laborator 1
31
Exemple
03.10.2015
Laborator 1
32
Exemple
Executarea fiierului:
SQL>@cale_fisier\ex7.sql
S se testeze pentru funcia ANALYST i
departamentele 20, 40, 50.
03.10.2015
Laborator 1
33