Sunteți pe pagina 1din 7

10.

Blocul urmator afiseaza:


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.