Documente Academic
Documente Profesional
Documente Cultură
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;
/
BEGIN
DELETE FROM ANGAJATI WHERE id_angajat=119;
END;
/
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;
/