Documente Academic
Documente Profesional
Documente Cultură
2. Utilizând o comandă SQL, creaţi o tabela numită Mesaje, având un câmp unic, de
tip Varchar2.
--EXERCITIUL 2
--EXERCITIUL 1
SET SERVEROUTPUT ON
DECLARE
CURSOR c IS
SELECT nr_comanda,count (id_produs) as produse from RAND_COMENZI
group by nr_comanda
order by PRODUSE desc;
T c%rowtype;
BEGIN
OPEN c;
LOOP
FETCH c INTO T;
DBMS_OUTPUT.PUT_LINE('nr.comanda:'||T.nr_comanda||'cantitate:'||T.produse);
EXIT WHEN c%ROWCOUNT=3;
END LOOP;
CLOSE c;
END;
---ex 3
SET SERVEROUTPUT ON
DECLARE
comenzi.nr_comanda%TYPE;
BEGIN
SELECT nr_comanda INTO V from COMENZI WHERE EXTRACT(YEAR FROM DATA)=&B-1;
DBMS_OUTPUT.PUT_LINE(V);
EXCEPTION WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('pREA MULTE INREGISTRARI');
when NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Nici o comanda');
end;
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE valoare_comenzi (p_an IN NUMBER) IS
CURSOR V IS SELECT co.nr_comanda,SUM(cantitate*pret) VAL FROM RAND_COMENZI r,
COMENZI co
where co.nr_comanda=r.nr_comanda AND extract(year from data)=p_an GROUP BY
co.nr_comanda;
BEGIN
FOR T in V LOOP
dbms_output.put_line('valoarea comenzii'||' '||T.nr_comanda||' '||' este de :'||'
'||T.val);
END LOOP;
END;
/
execute VALOARE_COMENZI(1999);
SET SERVEROUTPUT ON
CREATE OR REPLACE FUNCTION calcul_vechime (p_id IN NUMBER) return number as
V_VECHIME NUMBER ;
begin
SELECT ROUND((SYSDATE-DATA_ANGAJARE)/365) INTO V_VECHIME FROM ANGAJATI WHERE
ID_ANGAJAT=P_ID;
RETURN V_VECHIME;
EXCEPTION
WHEN NO_DATA_FOUND THEN RETURN 0 ;
WHEN OTHERS THEN RETURN -1;
END;
/
EXECUTE calcul_vechime(195);
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE Vechime_Angajati
IS
CURSOR V IS SELECT * FROM angajati ;
BEGIN
FOR T IN V LOOP
DBMS_OUTPUT.PUT_LINE('ANGAJATUL CU ID-UL' ||T.ID_ANGAJAT||'ARE VECHIMEA DE:'||
calcul_vechime(T.id_angajat)||' '||'ANI');
END LOOP;
END;
/
EXECUTE vechime_angajati;