Professional Documents
Culture Documents
S1L3 EE
DECLARE
V_DATA DATE:=ADD_MONTHS(SYSDATE,6);
BEGIN
DBMS_OUTPUT.PUT_LINE ('DATA PESTE 6 LUNI:'||V_DATA);
END;
S2L1 E4
DECLARE
v_length_of_string INTEGER;
BEGIN
v_length_of_string := num_characters('Oracle Corporation');
DBMS_OUTPUT.PUT_LINE(v_length_of_string);
END;
S2L1 E5
Scriei un bloc anonim care folosete numele unei ri (country_name) ca valoare de intrare i
afieaz cea mai mare i cea mai mic nlime (highest_elevation i lowest_elevation) pentru ara
respectiv. Folosii tabela countries. Executai blocul de 3 ori pentru rile: United States of
America, French Republic i Japan.
1
se definesc 3 variabile: una pentru numele rii care poate fi iniializat cu numele primei
ri, una pentru cea mai mic nlime i una pentru cea mai mare nlime;
se scrie instruciunea SELECT care selecteaz cele dou nlimi pentru ara definit;
se afieaz mesajul cu cele dou nlimi obinute;
DECLARE
V_TARA COUNTRIES.COUNTRY_NAME%TYPE:='Japan";
V_HE COUNTRIES.HIGHEST_ELEVATION%TYPE;
V_LE COUNTRIES.LOWEST_ELEVATION%TYPE;
BEGIN
SELECT HIGHEST_ELEVATION,LOWEST_ELEVATION INTO V_HE,V_LE
FROM COUNTRIES WHERE COUNTRY_NAME=V_TARA;
DBMS_OUTPUT.PUT_LINE('HE ESTE:'||V_HE);
DBMS_OUTPUT.PUT_LINE('LE ESTE:'||V_LE);
END;
S2L4 E5
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World');
END;
SAU
DECLARE
V_TODAY DATE:=SYSDATE;
V_TOMORROW V_TODAY%TYPE;
BEGIN
V_TOMORROW:=V_TODAY+1;
DBMS_OUTPUT.PUT_LINE('HELLO WORLD: '||V_TOMORROW);
END;
2
S2L5 E1
Ce va afia urmtorul cod?
DECLARE
x VARCHAR2(20);
BEGIN
x:= '123' + '456' ;
DBMS_OUTPUT.PUT_LINE(x);
END;
S2L5 E2
Scriei un bloc anonim care atribuie numele vostru complet unei variabile i afieaz numrul
total de caractere ale acestuia.
S2L5 E3
Scriei un bloc anonim care afieaz data curent n formatul Month dd, yyyy. Memorai data
ntr-o variabil de tip DATE cu identificatorul my_date. Definii o alt variabil tot de tip DATE
cu identificatorul v_last_day. Atribuii variabilei v_last_day ultima zi a lunii curente. Afiai
valoarea variabilei v_last_day.
S2L5 E4
Modificai programul creat la exerciiul S2L5 E3 prin adugarea a 45 de zile la data curent i
apoi calculai i afiai numrul de luni dintre cele dou date. Folosii funcia
MONTHS_BETWEEN.
S2L5 E6
Ce va afia urmtorul cod? Explicai rspunsul.
DECLARE
v_number NUMBER;
v_boolean BOOLEAN;
BEGIN
v_number := 25;
v_boolean := NOT(v_number > 30);
END;
S2L6 E1
Determinai valorile variabilelor din urmtorul cod conform domeniului i vizibilitii acestora:
DECLARE
weight NUMBER(3) := 600;
message VARCHAR2(255) := 'Product 10012';
BEGIN
3
DECLARE
weight NUMBER(3) := 1;
message VARCHAR2(255) := 'Product 11001';
new_locn VARCHAR2(50) := 'Europe';
BEGIN
weight := weight + 1;
new_locn := 'Western ' || new_locn;
-- Position 1 --
END;
weight := weight + 1;
message := message || ' is in stock';
-- Position 2 --
END;
S2L6 E2
Introducei i executai urmtorul bloc PL/SQL care conine blocuri imbricate. Rspundei la
ntrebri.
DECLARE
v_employee_id employees.employee_id%TYPE;
v_job employees.job_id%TYPE;
BEGIN
SELECT employee_id, job_id INTO v_employee_id, v_job
FROM employees
WHERE employee_id = 100;
DECLARE
v_employee_id employees.employee_id%TYPE;
v_job employees.job_id%TYPE;
BEGIN
SELECT employee_id, job_id INTO v_employee_id, v_job
FROM employees
WHERE employee_id = 103;
DBMS_OUTPUT.PUT_LINE(v_employee_id|| ' is a '||v_job);
END;
DBMS_OUTPUT.PUT_LINE(v_employee_id|| ' is a '||v_job);
END;
4
B. De ce blocul exterior afieaz pentru job_id valoarea 100 i nu 103?
C. Modificai codul pentru a afia id-ul angajatului 100 n blocul interior. Folosii
etichetele pentru blocuri.
S2L7 E1
Executai codul de mai jos. Se va executa corect dac l-ai introdus corect, dar conine cteva
nclcri ale bunelor practici n programare.
DECLARE
myvar1 VARCHAR2(20);
myvar2 number(4);
BEGIN
SELECT country_name INTO myvar1
FROM wf_countries WHERE country_id = 1246;
myvar2 :=
'1234';
MYVAR2 := myvar2 * 2;
DBMS_OUTPUT.PUT_LINE(myvar1);
End;
Exerciii suplimentare
1. Scriei un bloc anonim n care v calculai i afiai vrsta i numrul de zile pn la data
de natere (aniversarea voastr);
2. Modificai exerciiul S2L1 E5 astfel nct s afiai i diferena de nivel pentru fiecare
dintre cele 3 ri.
3. Modificai codul de la exerciiul 2 astfel nct s calculai i s afiai diferena de nivel
ntr-un bloc interior.
4. Modificai codul de la exerciiul 3 astfel nct s afiai diferena de nivel, dup afiarea
nlimii minime i maxime. n cte moduri putei face acest lucru?