Documente Academic
Documente Profesional
Documente Cultură
Creaţi un bloc PL/SQL pentru a selecta codul și data de încheiere a comenzilor încheiate
într-un an introdus de la tastatură (prin comandă SELECT simplă, fără să utilizați un cursor
explicit).
dacă interogarea returnează mai mult de o valoare pentru codul comenzii, tratați
excepția cu o rutină de tratare corespunzătoare și afișați mesajul “Atenţie! In anul
yyyy s-au încheiat mai multe comenzi!”;
dacă interogarea nu returnează nicio valoare pentru codul comenzii, tratați excepția
cu o rutină de tratare corespunzătoare și afișați mesajul “Atenţie! In anul yyyy nu s-au
încheiat comenzi!”;
dacă se returnează o singură linie, afișați codul și data comenzii;
tratați orice altă excepție cu o rutină de tratare corespunzătoare și afișați mesajul “A
apărut o altă excepție!”.
--testati cu anul 2015 (o singura comanda) => se face afisarea din zona executabila
(comanda SELECT intoarce un singur rezultat)
--testati cu anul 2019 (mai multe comenzi) => SELECT returneaza mai multe linii =>
TOO_MANY_ROWS
--testati cu anul 2000 (nicio comanda) => SELECT nu returneaza nimic =>
NO_DATA_FOUND
SET SERVEROUTPUT ON
DECLARE
v_id comenzi.id_comanda%TYPE;
v_data comenzi.data%TYPE;
BEGIN
FROM COMENZI
EXCEPTION
END;
DECLARE
v_id comenzi.id_comanda%TYPE;
v_data comenzi.data%TYPE;
prea_multe_comenzi EXCEPTION;
PRAGMA EXCEPTION_INIT(prea_multe_comenzi,-01422);
BEGIN
FROM COMENZI
WHERE EXTRACT(YEAR FROM data)= v_an;
EXCEPTION
END;
2. Creaţi un bloc PL/SQL prin care se dublează preţul produsului (pret_lista) al cărui cod este
citit de la tastatură. În cazul în care acesta nu există (comanda UPDATE nu realizează nicio
modificare) se va invoca o excepție. Tratați excepția prin afișarea unui mesaj.
DECLARE
nu_exista_produs EXCEPTION;
BEGIN
UPDATE produse
SET pret_lista=2*pret_lista
WHERE id_produs=v_id;
IF SQL%ROWCOUNT=0 THEN
RAISE nu_exista_produs;
ELSE
DBMS_OUTPUT.PUT_LINE('Modificare efectuata');
END IF;
EXCEPTION
END;
3. Într-un bloc PL/SQL citiți de la tastatură identificatorul unui produs. Afișați denumirea
produsului care are acel cod. De asemenea, calculați cantitatea totală comandată din acel
produs.
v_den produse.denumire_produs%TYPE;
v_cant NUMBER;
produs_necomandat EXCEPTION ;
BEGIN
FROM produse
FROM rand_comenzi
IF V_CANT IS NULL
else
EXCEPTION
END;
4. Într-un bloc PL/SQL utilizați un cursor parametrizat pentru a prelua numele, salariul și
vechimea angajaților dintr-un departament furnizat drept parametru.
DECLARE
from angajati
where id_departament=p_id;
v_id NUMBER := &id;
v_rec c%ROWTYPE;
BEGIN
open c(v_id);
loop
end loop;
close c;
END;