Incrementar los salarios de los empleados del departamento ‘IT’ en 1%, levantar una excepción en caso de que el salario
actualizado exceda el salario máximo permitido para el puesto
DECLARE
name_department departments.department_name% TYPE := 'IT';
incremento number := 1;
nvo_salario employees.SALARY%TYPE;
CURSOR CIncEmp(name_dept departments.department_name% TYPE) IS
SELECT employee_id, first_name ||' '|| last_name as NombreEmp, salary, max_salary
FROM employees join jobs using(job_id)
JOIN departments using(department_id)
WHERE department_name = name_dept
ORDER BY employee_id
FOR UPDATE OF salary NOWAIT;
BEGIN
FOR RegEmp IN CIncEmp(name_department) LOOP
DBMS_OUTPUT.PUT_LINE('ID. Empleado: ' || ' ' || RegEmp.employee_id);
DBMS_OUTPUT.PUT_LINE('Nombre Empleado: ' || ' ' || RegEmp.NombreEmp);
DBMS_OUTPUT.PUT_LINE('Salario Actual: ' || ' ' || RegEmp.salary);
DBMS_OUTPUT.PUT_LINE('% Incremento: ' || ' ' || Incremento/100);
Nvo_Salario:= RegEmp.salary * (1 + (incremento/100));
IF Nvo_Salario <= RegEmp.max_salary THEN
UPDATE employees SET salary = Nvo_Salario
where current of CIncEmp;
DBMS_OUTPUT.PUT_LINE('Nuevo Salario ' || ' ' || Nvo_Salario);
ELSE
DBMS_OUTPUT.PUT_LINE('El aumento excede el limite preestablecido ' || RegEmp.salary ||' ' ||Nvo_Salario);
END IF;
END LOOP;
commit;
END;
Comments