DECLARE DBMS_OUTPUT.PUT_LINE(v_message); END; c. EQUAL 14. Care dintre urmatoarele blocuri se executa cu erori? d. declare alfa:= interval’8’ month; DBMS_OUTPUT.PUT_LINE(‘alfa = ‘|| alfa); end; 28. Care dint urmat var apel corect func F_TEST care are un singur par num? a. SELECT F_TEST (80) FROM DUAL ; 29. Care dintre urmat vizual poate fi fol al subprogr P1: d. USER_SOURCE 9. Care este varianta corecta pentru afisarea variabilei v_mesaj ? b. VARIABLE v_mesaj VARCHAR2 (30) END; 3. Care este varianta corectă pentru a defini doi vectori avand dimen maximă 3 c. DECLARE TYPE vector IS VARRAY(3) OF NUMBER v_1 vector:=vector(1,2,3); v_2 vector:=vector(100,200,300) v_produs vector:=vector(); BEGIN FOR i in 1:3 LOOP v_produs(i) :=v_produs(i)* v v 2(i) END LOOP; END 1. Care este varianta corecta pentru declararea urmatoarelor variabile? v_valoare NUMBER(15) NOT NULL := 0; v_data_achizitie DATE DEFAULT SYSDATE; c_valoare CONSTANT NUMBER:= 1000; v_ cod_opera opere.cod_opera%TYPE; 19. Care este var corecta pentru a defini un tablou primele 10 numere naturale? b. DECLARE tab.EXTEND; tab(i) := i; END LOOP; END; 20. Care este var de bloc PL/SQL corecta pentru a mentine angaj care au salariul mai mic decat 20000 si lucreaza in departamentul 90? b. DECLARE TYPE t_id IS VARRAY(100) OF angajati.id_angajat%TYPE; v_id t_id :=t_id(); BEGIN SELECT id_angajat BULK COLLECT INTO v_id END; 21.Care este varianta corecta de cod PL/SQL care sterge din tabelul joburi, mentinute intr-un vector? a. DECLARE TYPE minsal IS VARRAY(20) OF NUMBER; v min sal min sal:=min sal(4000,8200); BEGIN FORALL i IN v min sal.FIRST..v min sal. LAST DELETE FROM joburi WHERE salariu min=v min sal(i); END; 22. Care este varianta corecta prin care se adauga in tab ang un nou camp numit telefon de linie noua in tabel? a. CREATE TYPE lista AS TABLE OF VARCHAR2(20); ADD (telefon lista) NESTED TABLE telefon STORE AS tabel_tel; INSERT INTO angajati VALUES(200,’xxx’,4000,40000,lista(0214567898,0214567899)); 23. Care este varianta cor prin care se inca date dintr-un cursor intr-o colectie? b. DECLARE TYPE tip_job IS TABLE OF joburi.nume_job%TYPE; v nume tip_job; CURSOR c_joburi IS SELECT nume_job FROM joburi; BEGIN OPEN c_joburi; FETCH c_joburi BULK COLLECT INTO v nume; CLOSE c_joburi; END; 34. Care este var corecta pentru a crea specif unui pachet, angajat cu un an cod? c. CREATE OR REPLACE PACKAGE manager_pkg IS CURSOR joburicurs IS SELECT id_angajat, id_job FROM angajati; PROCEDURE update_job(p_ang_id IN angajati.id angajat%TYPE, P_id_job OUT angajati.id_job%TYPE); END manager_pkg; 24. Care este var incor prin care se obtin num si salariul angaj care au salariul mai mic decat 2500 si nu lucreaza in departamentul avand codul 80? b. DECLARE v_sal :=2500; v_dept := 80; END LOOP; END; 25. Care este varianta corecta prin care se afiseaza numele si prenumele primelor 5 persoane angajate in luna martie in anul 1997? b. DECLARE ORDER BY data_angajarii; BEGIN CLOSE c; END; 37. Care dintre urmatoarele afirmatii nu este corecta? d. Un trigger la nivel de linie este exec o singura data, indifde numa de linii afectate de comanda declansatoare. 38. Care dintre urmatoarele afirmatii este corecta? a. Blocul PL/SQL care descrie act unui trigger nu poate cont com COMIT. 2. Care din urmatoarele declaratii de valabilitate este corecta? v_id_student NUMBER(5); v_prenume_student studenti.prenume%TYPE; v_data DATE:=SYSDATE+1; 40. Care este varianta corecta care def un trigger la niv de com tabel angajati? c. CREATE TRIGGER trigger_audit_angajati AFTER INSERT OR DELETE OR UPDATE ON angajati VALUES (‘Actualizare’); END IF; END; 32. Care tabel/vizualizare poate fi folosit/folosita detin de utilizat curent? SELECT * FROM ….. WHERE OBJECT_TYPE IN (‘PROCEDURE’ , ‘FUNCTION’); d. USER_OBJECTS 15. Ce comanda SQL*Plus ar putea sa preceada blocul de mai jos pentru ca in acesta sa se utilizeze valoarea data variabilei sem? DECLARE v_sem CHAR(2):=UPPER(‘&sem’); END CASE; END; a. ACCEPT sem PROMPT ‘sem=’ 30. Ce trebuie adaugat la linia 9 pentru ca urmat functie sa fie corect creata? 1. CREATE OR REPLACEFUNCTION nr_sal(v_dept NUMBER) 8. WHERE id_departament=v_dept; 9. ……………………………………………………….. 10. END nr_sal; c. RETURN v_numar; 35. Ce treb ada la linia 11 in urma bloc PL/SQL sa se folos corect cursorul? 1 DECLARE 2 CURSOR c_ang IS 10 SET salariu=salariu+1000 11 ……………………….. 12 END LOOP; 13 END; b. WHERE CURRENT OF c_ang; 33. Codul sursa de mai jos defin un pach mare sau egal decat acel min +1000. CREATE OR REPLACE PACKAGE pachet_min_sal AS CURSOR c_ang(nr NUMBER) RETURN angajati % ROWTYPE; FUNCTION f_min RETURN NUMBER ; RETURN minim; END f_min; END pachet_min_sal; Care este varianta corecta de apelare pentru a obtine lista dorita? c. DECLARE val_min:=pachet_min_sal.f_min; FORv_cursor IN pachet_min_sal .c_ang(val_min) END; 36. In blocul PL/SQL de mai jos VARIABLE rows_deleted VARCHAR(20) DECLARE v_dep_id angajati.id_departament%TYPE:=80; BEGIN :rows_deleted:=SQL%ROWCOUNT||’rows deleted’; END; / PRINT rows_deleted apare: c. un cursor implicit 11. Pentru ca urmat bloc PL/SQL sa fie corect trebuie adaug la linia 8 urmat cod: SQL > DECLARE 2 TYPE ang_record_type IS RECORD ( 3 nume VARCHAR2(20), 7 SELECT nume, id_departament 8 9 FROM angajati WHERE id_angajat = 100; 13 ang_record.departament); 14 END; d. INTO ang_record 12. Pentru ca urma bloc PL/SQL sa fie corect si sa afiseze codul, salariatul si jobul angajatului cu codul 100, trebuie adaugat la linia 10 urmatorul cod: SQL> DECLARE 2 TYPE type_ang IS RECORD ( 3 ang_cod angajati.id_angajat%TYPE, 9 WHERE id_angajat=100 10 11 INTO v_ang; 13 ‘ si jobul ‘ || v_ang.job || ‘ are salariul ‘ || v_ang.sal); 14 END; c. RETURNING id_angajat, salariu, id_job 13. Pentru ca urmat bloc PL/SQL sa fie corect treb adau la linia 6 urmat cod: 1 DECLARE 2 TYPE typetablou IS TABLE OF NUMBER; 3 tablou typetablou:= typetablou(); 6 7 tablou(i) :=i; 8 END LOOP; 9 END; a. tablou.EXTEND; 27. Parametrii unei functii pot fi:b. Numai de intrare (IN) 31. Se da functia de mai jos ,care permite de 10%. CREATE FUNCTION impozit(p_value IN NUMBER) RETURN NUMBER IS BEGIN RETURN(p_value*0.1); END impozit; Care este sintaxa corecta pentru a apela aceasta functie? c. SELECT id_angajat, nume, salariu, impozit(salariu) tax FROM angajati WHERE id_departament=50; 3. Se da urmatorul bloc PL/SQL: DECLARE carte VARCHAR2(20); autor VARCHAR(15) DEFAULT 'Eminescu' ; DBMS_OUTPUT.PUT_LINE(carte||' '||autor); END; Care din urmatoarele afirmatii este corecta? d. Blocul se executa fara erori si afiseaza 'Eminescu' 4. Se da urmatorul bloc PL/SQL: DECLARE nume VARCHAR2(15); v_nr INTEGER; DBMS_OUTPUT.PUT_LINE('Sirul are '||v_nr||'caractere'); END; Care din urmatoarele afirmatii este adevarata? b. Blocul se executa fara erori si afisaza 'Sirul are caractere'). 5. Se da urmatorul bloc PL/SQL DECLARE v_salariu NUMBER(8):=&p_salariu; v_bonus NUMBER(8); v_salariu_anual NUMBER(8); END IF; DBMS_OUTPUT.PUT_LINE(Bonusul este'|| v_bonus); END; Care din urmatoarele afirmatii nu este corecta? a. Blocul genereaza o eroare, deoar variab p_salariu nu este initializ. 6. Se da urmatorul bloc PL/SQL: BEGIN SELECT nume_job INTO :rezultat DBMS_OUTPUT_LINE('Numele jobului este'|| :rezultat); END; Care din urmatoarele afirmatii este adevarata? b. Executia blocului se incheie cu o eroare, deoarece variabila de legatura rezultat nu este declarata in afara blocului PL/SQL. 7. Se da urmatorul bloc PL/SQL: DECLARE v_cod_sal angajati.id_angajat%TYPE:= 100; v_cod_dept angajati.id_departament%TYPE:= 10; DBMS_OUTPUT.PUT_LINE (‘Actualizare realizata’); END IF; END; Care dintre urmatoarele afirmatii este adevarata? d. Blocul se va executa fara erori si afiseaza mesajul ‘Nu exista un angajat cu acest cod’ 26. Se da urmatorul bloc PL/SQL: DECLARE v_nume angajati.nume%TYPE; v_data angajati.data_angajarii%TYPE; CURSOR c IS EXIT WHEN c%NOTFOUND; END LOOP; COMMIT; END; Care dintre urmatoarele afirmatii este adevarata? a. Blocul se executa fara erori, introducandu -se in tabelul informatii o linie cu toate valorile null , respectiv toate liniile din tabelul angajati 17. Se da urmatorul bloc PL/SQL DECLARE TYPE tabimb IS TABLE OF VARCHAR2(50); tab1 tabimb; tab2 tabimb:= tabimb (); DBMS_OUTPUT.PUT_LINE(‘tab2 este NOT NULL’); END IF; END; In urma executiei acestui bloc se obtine urmatorul rezultat: b. tab1 este NULL tab2 este NOT NULL 18. Se da urmatorul bloc PL/SQL DECLARE TYPE tablou_numar IS TABLE OF NUMBER INDEX BY PLS_INTEGER; v_tablou tablou_numar; DBMS_OUTPUT.PUT_LINE(‘tabloul are ‘ || v_tablou.COUNT || ‘elemente’); END; In urma executiei blocului se obtine urmatorul rezultat: c. tabloul are 10 elemente tabloul are 0 elemente 16. Sa se introduca in tab testare5 inregistrari, egale cu 1, 2, 3, 4 resp 5. Care din urmatoarele variante nu executa acest deziderat? c. DECLARE BEGIN FOR i IN 1…5 LOOP INSERT INTO testare VALUES (v_contor); END LOOP; END; 41. Se defin un trigger care determina este marit. Care dintre urmat var e corecta? a. CREATE TRIGGER trigger_salariu AFTER UPDATE OF salariu ON angajati FOR EACH ROW END IF; END; 39. Se presup ca asupra tabe angajati au fost defin urmatorii 4 triggeri LMD: - trigger 1 de tip BEFORE INSERT la nivel de comanda; - trigger 2 de tip BEFORE UPDATE la nivel de comanda; - trigger 3 de tip AFTER UPDATE la nivel de linie; - trigger 4 de tip AFTER DELETE la nivel de comanda. O comanda UPDATE actualizeaza 3 inregistrari executii al acestuia)? c. Trigger1 - 0 Trigger2 - 1 Trigger3 – 3 42. Se presupune ca a fost creat tabelul dept care lucreaza in acesta. Prin comanda urmatoare se defineste vizualizarea view_angajati: CREATE VIEW view_angajati AS SELECT id_angajat, nume, prenume, id_departament FROM angajati; Care este var corecta prin care se defineste un trigger stearsa o inregistrare? b. CREATE TRIGGER trig_dept INSTEAD OF INSERT OR DELETE ON view_angajati FOR EACH ROW BEGIN IF INSERTING THEN UPDATE dept SET nr_angajati = nr_angajati +1; WHERE id_departament = :NEW.id_departament; ELSE UPDATE dept SET nr_angajati = nr_angajati -1; WHERE id_departament = :OLD.id_departament; END IF;END; 44. Se presup că într-o sală a unui muzeu 10 opere de artă. următ trigger: CREATE TRIGGER trigger_opere BEFORE INSERT OR UPDATE OF cod_sala ON opera RAISE_APPLICATION_ERROR(-20000,’Prea multe opere de arta); END IF; END; Care dintre urmatoarele variante este corecta? d. Triggerul este creat fara erori la compilare, dar in cazul anumitor comenzi LMD asupra tabelului opera va genera eroarea “table mutating”. 43. Urmatoarea comanda creaza tabelul audit: CREATE TABLE audit (actiune VARCHAR2(20), Apoi, este definit urmatorul trigger: CREATE TRIGGER trig_audit VALUES(‘Obiect modificat’); END; Care dintre actiunile urmat va determina decl triggerului creat inreg in tab audit? a. O comanda prin care se adauga o constrangere de cheie primara unui table existent. 8. Variabila g_mesaj declarata ca mai jos este: VARIABLE g_mesaj VARCHAR2 (50) BEGIN :g_mesaj := ‘Invat PL/SQL; END; c. Variabila de legatura.