Sunteți pe pagina 1din 2

--1.

Să se afiseze numele și salariul tuturor angajaților (folosind unul dintre cele 3 tipuri de
structuri repetitive)

SET SERVEROUTPUT ON
DECLARE
v_nume angajati.nume %type;
v_sal angajati.salariul %type;
i number(4):=100;
BEGIN
loop
SELECT salariul,nume into v_sal,v_nume from angajati where id_angajat=i;
DBMS_OUTPUT.PUT_LINE(''||v_nume||','||v_sal||'');
i:=i+1;
exit when i>206;
end loop;
END;
/

--2. Să se șteargă angajatul 119

BEGIN
DELETE FROM ANGAJATI WHERE id_angajat=119;
END;
/

3. Să se execute din nou blocul de la exercițiul 1.

SET SERVEROUTPUT ON
DECLARE
v_nume angajati.nume %type;
v_sal angajati.salariul %type;
i number(4):=100;
BEGIN
loop
SELECT salariul,nume into v_sal,v_nume from angajati where id_angajat=i;
DBMS_OUTPUT.PUT_LINE(''||v_nume||','||v_sal||'');
i:=i+1;
exit when i>206;
end loop;
END;
/
--Nu merge deoarece am sters inregistrarea cu angajatul 119.
--4. Ce se întâmplă? Să se rezolve problema apărută!

SET SERVEROUTPUT ON
DECLARE
v_nume angajati.nume %type;
v_sal angajati.salariul %type;
i number(4):=100;
BEGIN
loop
IF i=119 then i:=i+1
end if ;
SELECT salariul,nume into v_sal,v_nume from angajati where id_angajat=i;
DBMS_OUTPUT.PUT_LINE(''||v_nume||','||v_sal||'');
i:=i+1;
exit when i>206;
end loop;
END;
/

--5. Să se afiseze numele și salariul angajaților care au vechimea mai mare de 10 ani.

SET SERVEROUTPUT ON
DECLARE
v_nume angajati.nume %type;
v_sal angajati.salariul %type;
i number(4):=100;
BEGIN
loop
SELECT salariul,nume into v_sal,v_nume from angajati where id_angajat=i AND round
(sysdate-data_angajare)/365>10 ;
DBMS_OUTPUT.PUT_LINE(''||v_nume||','||v_sal||'');
i:=i+1;
exit when i>206;
end loop;
END;
/

S-ar putea să vă placă și