Sunteți pe pagina 1din 5

Blocuri anonime în PL/SQL. Gestiunea variabilelor.

Blocuri imbricate
https://docs.google.com/document/d/1rnnR7fqEyQtyLHhkwmkpVRQ-
AY4hnIUwk1mubApeODM/edit#heading=h.v5bdtjjfgnwx

Să se realizeze şi testeze următoarele blocuri anonime în PL/SQL:


1. Afişaţi-vă numele complet;
2. Afişaţi data care va fi peste exact 4 luni:
a. Utilizaţi doar o constantă;
b. Folosiţi o variabilă iniţializată la declarare
c. Folosiţi o variabilă calculată în secţiunea de execuţie
d. Utilizaţi o interogare
3. Să se defineasca variabile si constante de diferite tipuri, cu diferite optiuni (NOT NULL,
DEFAULT), apoi sa se afiseze valoarea lor in cadrul sectiunii de executie. Se vor afisa
propozitii inteligibile
4. Faceţi o copie a tabelei EMPLOYEES sub numele ANGAJATI (în SQL). Analizaţi continutul
tabelei, apoi afişaţi numele, prenumele si salariul lunar al Managerului general (în
PL/SQL).
5. Definiţi variabile/constante de mai multe tipuri de dată. Folosiţi câte o funcţie pentru
fiecare variabilă şi afişaţi rezultatul. Mai intai utilizaţi funcţiile în cadrul unor interogări
SQL, apoi fără utilizarea clauzei SELECT în cadrul blocului de execuţie
6. Realizaţi 3 blocuri imbricate – superior, intermediar şi inferior – iar în cadrul fiecăruia
utilizaţi câte o variabilă. Testaţi vizibilitatea şi domeniul acestor variabile.
7. Realizaţi 3 blocuri imbricate, iar în cadrul fiecăruia utilizaţi variabile cu acelaşi nume, dar
valori diferite. Afişaţi în cadrul fiecărui bloc valoarea tuturor variabilelor, calificându-le
prin numele blocului doar pe acelea care solicit acest lucru. Pentru a şti din ce bloc s-a
făcut afişarea, să se precizeze numele blocului. Ex. “Valori din blocul superior”

Rezolvari
1. BEGIN
DBMS_OUTPUT.PUT_LINE('Ma numesc Mihesan Calin');
END;

2.
a.
BEGIN
DBMS_OUTPUT_LINE('14 Februarie 2021');
END;
b.
DECLARE
v_date DATE :='14-Feb-2021';
BEGIN
DBMS_OUTPUT.PUT_LINE('Peste 4 luni va fi data de:' || v_date);
END;

c.
DECLARE
v_data DATE;
BEGIN
v_data:=ADD_MONTHS(SYSDATE,4);
DBMS_OUTPUT.PUT_LINE(v_data);
END;

d.
DECLARE
v_data DATE;
BEGIN
SELECT ADD_MONTHS(SYSDATE,4) INTO v_data FROM dual;
DBMS_OUTPUT.PUT_LINE(v_data);
END;

3.
DECLARE
data_azi DATE :=SYSDATE;
v_nume_student VARCHAR2(20);
v_media NUMBER(2,1);
v_nota_1 NUMBER NOT NULL :=10;
v_nota_2 NUMBER;
v_nrluni NUMBER;

BEGIN
v_nume_student :='Ana';
v_nota_2 := 9;
v_nrluni:=4;
v_media:=(v_nota_1 + v_nota_2)/2;
DBMS_OUTPUT.PUT_LINE('Peste ' || v_nrluni || ' luni, la data de ' ||
ADD_MONTHS(data_azi, v_nrluni) ||' ' || v_nume_student || ' va avea media ' ||
v_media);
END;

4.

DECLARE
v_nume employees.last_name%TYPE;
v_prenume employees.first_name%TYPE;
v_salariu employees.salary%TYPE;
BEGIN
SELECT last_name, first_name, salary/12
INTO v_nume, v_prenume, v_salariu
FROM employees
WHERE manager_id IS NULL;
DBMS_OUTPUT.PUT_LINE(v_nume || ' ' || v_prenume || ' ' || v_salariu);
END;

5.

DECLARE

v_nume VARCHAR(30):='Mihai';

v_varsta NUMBER(2):= 2;

V_data DATE:='01-JAN-1970';

BEGIN

SELECT CONCAT(v_nume, 'Constantin'), power(v_varsta,6),ADD_MONTHS(V_data,6)


INTO v_nume,v_varsta,v_data FROM dual;

DBMS_OUTPUT.PUT_LINE(v_nume||' are varsta de '||v_varsta||' ani si este nascut in data


de '||V_data);

END;

DECLARE
v_nume VARCHAR(30):='Mihai';

v_varsta NUMBER(2):= 2;

v_data DATE:='01-JAN-1970';

BEGIN

v_nume:= CONCAT(v_nume, 'Constantin');

v_varsta:=POWER(v_varsta,6);

v_data :=ADD_MONTHS(V_data,6);

DBMS_OUTPUT.PUT_LINE(v_nume||' are varsta de '||v_varsta||' ani si este nascut in data


de '||V_data);

END;

6.

DECLARE

v_bloc_superior VARCHAR2(20) DEFAULT 'superior';

BEGIN

DECLARE

v_bloc_intermediar VARCHAR2(20) DEFAULT 'intermediar';

BEGIN

DECLARE

v_bloc_inferior VARCHAR2(20) DEFAULT 'inferior';

BEGIN

DBMS_OUTPUT.PUT_LINE('Valori din blocul inferior: ' || v_bloc_inferior || ' ' || v_bloc_intermediar


|| ' ' || v_bloc_superior);

END;

DBMS_OUTPUT.PUT_LINE('Valori din blocul intermediar: ' || v_bloc_intermediar || ' ' ||


v_bloc_superior);

END;

DBMS_OUTPUT.PUT_LINE('Valori din blocul superior: ' || v_bloc_superior);

END;
7. DECLARE

v_bloc VARCHAR2(20) DEFAULT 'superior';

BEGIN

<<intermediar>>

DECLARE

v_bloc VARCHAR2(20) DEFAULT 'intermediar';

BEGIN

<<inferior>>

DECLARE

v_bloc VARCHAR2(20) DEFAULT 'inferior';

BEGIN

DBMS_OUTPUT.PUT_LINE('Valori din blocul inferior: ' || v_bloc || ' ' || intermediar.v_bloc || ' ' ||
superior.v_bloc);

END;

DBMS_OUTPUT.PUT_LINE('Valori din blocul intermediar: ' || ' ' || v_bloc || ' ' || superior.v_bloc);

END;

DBMS_OUTPUT.PUT_LINE('Valori din blocul superior: ' || v_bloc);

END;

S-ar putea să vă placă și