EXERCITII
-
Upload
mihai-dumitrescu -
Category
Documents
-
view
223 -
download
3
description
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).