EXERCITII

9
EXERCIŢII 1. Specificaţi ce se va afişa la rularea următorului bloc PL/SQL: DECLARE v_var1 NUMBER :=100; v_var2 NUMBER; v_var3 NUMBER := v_var2; v_var4 VARCHAR(20) := 'variabila PL/SQL'; v_var5 NUMBER NOT NULL := v_var1; c_const1 CONSTANT DATE := TO_DATE('12/02/2007','dd/mm/yyyy'); c_const2 CONSTANT NUMBER NOT NULL := 2; c_const3 CONSTANT NUMBER := NULL; v_var6 NUMBER DEFAULT NULL; BEGIN DBMS_OUTPUT.PUT_LINE('variabila 1 = '||v_var1); DBMS_OUTPUT.PUT_LINE('variabila 2 = '||v_var2); DBMS_OUTPUT.PUT_LINE('variabila 3 = '||v_var3); DBMS_OUTPUT.PUT_LINE('variabila 4 = '||v_var4); DBMS_OUTPUT.PUT_LINE('variabila 5 = '||v_var5); DBMS_OUTPUT.PUT_LINE('constanta 1 = '||c_const1); DBMS_OUTPUT.PUT_LINE('constanta 2 = '||c_const2); DBMS_OUTPUT.PUT_LINE('constanta 3 = '||c_const3); DBMS_OUTPUT.PUT_LINE('variabila 6 = '||v_var6); END; / 2. Specificaţi ce se va afişa la rularea următorului bloc PL/SQL (care conţine blocuri imbricate, ilustrând domeniul de vizibilitate al unor variabile care au acelaşi nume): DECLARE var NUMBER; BEGIN var := 1; DBMS_OUTPUT.PUT_LINE(var); <<bloc1>>

description

Master Aprofundare Informatica Economica Cibernetica CSIE ASE

Transcript of EXERCITII

EXERCIII

EXERCIII

1. Specificai ce se va afia la rularea urmtorului bloc PL/SQL:

DECLARE

v_var1 NUMBER :=100;

v_var2 NUMBER;

v_var3 NUMBER := v_var2;

v_var4 VARCHAR(20) := 'variabila PL/SQL';

v_var5 NUMBER NOT NULL := v_var1;

c_const1 CONSTANT DATE := TO_DATE('12/02/2007','dd/mm/yyyy');

c_const2 CONSTANT NUMBER NOT NULL := 2;

c_const3 CONSTANT NUMBER := NULL;

v_var6 NUMBER DEFAULT NULL;BEGIN

DBMS_OUTPUT.PUT_LINE('variabila 1 = '||v_var1);

DBMS_OUTPUT.PUT_LINE('variabila 2 = '||v_var2);

DBMS_OUTPUT.PUT_LINE('variabila 3 = '||v_var3);

DBMS_OUTPUT.PUT_LINE('variabila 4 = '||v_var4);

DBMS_OUTPUT.PUT_LINE('variabila 5 = '||v_var5);

DBMS_OUTPUT.PUT_LINE('constanta 1 = '||c_const1);

DBMS_OUTPUT.PUT_LINE('constanta 2 = '||c_const2);

DBMS_OUTPUT.PUT_LINE('constanta 3 = '||c_const3);

DBMS_OUTPUT.PUT_LINE('variabila 6 = '||v_var6);

END;

/

2. Specificai ce se va afia la rularea urmtorului bloc PL/SQL (care conine blocuri imbricate, ilustrnd domeniul de vizibilitate al unor variabile care au acelai nume):

DECLARE

var NUMBER;

BEGIN

var := 1;

DBMS_OUTPUT.PUT_LINE(var);

DECLARE

var NUMBER;

BEGIN

var :=2;

DBMS_OUTPUT.PUT_LINE(var);END bloc1;DBMS_OUTPUT.PUT_LINE(var);

DECLARE

var NUMBER;

BEGIN

var :=3;

DBMS_OUTPUT.PUT_LINE(var);

DECLARE

var NUMBER;

BEGIN

var :=4;

DBMS_OUTPUT.PUT_LINE(var);

DBMS_OUTPUT.PUT_LINE(bloc2.var);END bloc3;

DBMS_OUTPUT.PUT_LINE(var);END bloc2;

DBMS_OUTPUT.PUT_LINE(var);END;

/3. S se calculeze suma a dou numere, iar rezultatul s se divid cu 3. DECLARE

v_num1 number :=10;

v_num2 number :=20;v_rezultat number;BEGIN

v_rezultat:=(v_num1+v_num2)/3;dbms_output.put_line('Rezultatul este: '||v_rezultat);END;

/

4. S se afieze salariul mrit cu un procent.

DECLARE

v_sal number:=2000;

v_procent number:=10;

BEGIN

dbms_output.put_line(v_sal*(1+ v_procent/100));

END;

/

5. S se afieze TVA pentru o anumit valoare specificata.

6. Creati un bloc PL/SQL ce selecteaza stocul maxim pentru produsele existente in tabela PRODUSE. Tipariti rezultatul pe ecran.

7. Creati un bloc PL/SQL ce adauga un produs nou in tabela PRODUSE.

a. Folositi maximul dintre codurile produselor si adaugati 10 la aceasta valoare, folosind-o ca valoare pentru codul produsului nou introdus.

b. Lasati unitatea de masura si stocul NULL.

c. Executati blocul.

8. Creati un bloc PL/SQL ce actualizeaza zona unei firme existente.

a. Codul firmei este specificat prin initializarea unei variabile localeb. Zona firmei este specificata prin initializarea unei variabile locale c. Testati blocul PL/SQL.

9. Creati un bloc PL/SQL care sterge un produs pe baza codului acestuia (dat drept valoare initiala unei variabile locale).

10. Creati o tabela numita Mesaje, avand un camp unic, de tip Varchar2.11. Scrieti un bloc PL/SQL pentru a selecta codul comenzilor incheiate in anul 2005.

a. Daca se returneaza o singura linie, introduceti in tabela Mesaje codul comenzii.

b. Daca interogarea returneaza mai mult de o valoare pentru numarul comenzii, captati exceptia cu o rutina de tratare corespunzatoare si inserati in tabela Mesaje mesajul Atentie! In anul 2005 s-au incheiat mai multe comenzi!.

c. Daca interogarea nu returneaza nici o valoare pentru numarul comenzii, captati exceptia cu o rutina de tratare corespunzatoare si inserati in tabela Mesaje mesajul Atentie! In anul 2005 nu s-au incheiat comenzi!.

d. Captati orice alta exceptie cu o rutina de tratare corespunzatoare si inserati in tabela Mesaje mesajul A aparut o alta eroare!.

12. Afiai informaii despre primele 3 comenzi care au cea mai mare valoare.13. S se defineasc o variabil de tip nregistrare (record), de acelai tip cu un tuplu din tabela Produse i s se ncarce n aceast variabil nregistrarea pentru care Codprodus = 111.14. S se afieze numrul de produse i stocul mediu al acestora.15. S se creeze procedura Adauga_firma care s adauge o nregistrare nou n tabela Firme.16. S se creeze procedura Modifica_firma care s modifice denumirea unei firme. Codul firmei si denumirea acesteia sunt parametrii procedurii.17. S se creeze procedura Sterge_firma care s tearg o firma n funcie de codul primit drept parametru.ntrebrile de tip gril pot avea un singur rspuns corect, nici unul sau mai multe!

18. Din urmtoarea structur de bloc PL/SQL:

DECLARE

seciune declarativ

BEGIN

seciune executabil

EXCEPTION

seciune tratare erori

END;

a) sunt obligatorii toate seciunile;

b) sunt opionale toate seciunile;

c) lipsesc alte seciuni;

d) este obligatorie doar seciunea executabil;;

e) este obligatorie doar seciunea declarativ.

19. Se consider secvena PL/SQL:

DECLARE

i NUMBER(3);

n NUMBER;BEGIN

FOR i IN 1 .. 15 LOOP

n:=i MOD 2;

IF n=0 THEN

INSERT INTO mesaje VALUES (i, 'par');

ELSE

INSERT INTO mesaje VALUES (i, 'impar');

END IF;

COMMIT;

END;/Precizai rspunsurile corecte. Explicai!

a) se realizeaz o ciclare cu numrtor;

b) se realizeaz adugarea de noi atribute n tabela Mesaje;c) nu se respect structura de bloc PL/SQL;

d) este greit.

20. Un cursor implicit poate fi evaluat folosind atributele:

a) SQL%ROWCOUNT;

b) SQL%FOUND;

c) SQL%TYPE;

d) SQL%ROWTYPE;

e) SQL%NOTFOUND.

21. ntr-un bloc PL/SQL o excepie se definete n mod explicit (de ctre utilizator) prin comanda:

a) RAISE nume_excepie;

b) nume_excepie EXCEPTION;

c) WHEN nume_excepie THEN;

d) nu se poate.

22. Un trigger este executat implicit de serverul Oracle atunci cnd are loc:a) insert

b) update

c) delete

d) select

e) create

23. Se d urmtoarea secven de comenzi:

DECLARE

invalid_prod EXCEPTION;

BEGIN

UPDATE produse

SET denprodus='cafea'

WHERE codprodus=3;

IF SQL%NOTFOUND THEN

RAISE invalid_prod;

END IF;

EXCEPTION

WHEN invalid_prod THEN

DBMS_OUTPUT.PUT_LINE('Nu exista produsul cu acest cod');

END;

/

Care afirmaii sunt corecte:

a) se trateaz o excepie de sistem;

b) utilizeaz un cursor implicit;

c) utilizeaz un cursor explicit;

d) se trateaz o excepie definit de utilizator;

24. Se d urmtoarea secven de comenzi:

CREATE TABLE mesaje

(cod varchar2(7),

nume varchar2(20)

);

DECLARE

v_cod agenti.codagent%type;

v_nume agenti.numeagent%type;

CURSOR c1 IS SELECT codagent,numeagent FROM agenti;

BEGIN

OPEN c1;

FOR i IN 1..5 LOOP

FETCH c1 INTO v_cod,v_nume;

INSERT INTO mesaje VALUES(v_cod,v_nume);

END LOOP;

CLOSE c1;

END;

/

Care afirmaie este greit:

a) se deschide un cursor implicit definit de utilizator;

b) se utilizeaz o structur de control repetitiv

c) se creeaz o tabel;

d) se definesc dou variabile scalare;

e) se definete un cursor explicit;

25. Precizai ce va afia urmtorul bloc PL/SQL:

DECLARE

Myage number;

BEGIN

IF myage>18 THEN

dbms_output.put_line('Adult!');

ELSE

dbms_output.put_line('Copil!');

END IF;

END;

/

26. Care din urmtoarele variabile nu este corect definit? Explicai!

a) v_codp produse.codprodus%type;

b) v_data date default sysdate;

c) v_stocmin produse.stoc%type := 500;

d) v_data2 date := sysdate+7;

e) v_valid boolean not null;

27. n urmtorul exemplu se definesc:

DECLARE

v1 number(7,2);

v2 boolean;

v3 char(7);

v4 date;

v5 agenti%rowtype;

Specificai care afirmaie este eronat. n secvena de mai sus sunt definite:a) o variabil numeric;

b) o variabil de tip dat calendaristic;

c) o variabil boolean;

d) o variabil de tip ir de caractere de lungime variabil;

e) o variabil compus de tip nregistrare (record).