Desarrolle un cursor, que permita estudiar los empleados (“*Employees*”)
cuyo cargo sea “*Finance Manager*” o “*Programmer*”, generando un registro
en la tabla "*EstudioSueldo*" para cada empleado. En dicha tabla se debe
registrar: el ID del Empleado, Nombre, Apellido, renta, la diferencia con el
promedio y un comentario
promedio entre el valor min y max, definido en la tabla *jobs* el comentario
debe indicar "*estudiar un aumento*". Para los que tienen una renta
superior al promedio hay que indicar "*evaluar carga de trabajo*" en el
mensaje.
SOLUCION
-PRIMERO BORRAR Y CREAR TABLA "ESTUDIOSUELDO"
drop table estudioSueldo;
create table estudioSueldo(
idEmpleado number(6),
nombre varchar2(20),
apellido varchar2(25),
renta number(8,2),
promedio number(8,2),
diferencia number(8,2),
mensaje varchar2(30));
-SEGUNDO CREAR EL CURSOR QUE INSERTA EN LA TABLA "ESTUDIOSUELDO"
--Inicio del Cursor
DECLARE
CURSOR crEmpleado is
SELECT first_name, last_name, e.job_id, employee_id, salary
FROM employees e, jobs j
WHERE e.job_id=j.job_id
AND (lower(job_title)='finance manager'
OR upper(job_title)='PROGRAMMER');
--variables
vNombre employees.first_name%type;
vApellido employees.last_name%type;
vJob_id employees.job_id%type;
vEmpleado_id employees.employee_id%type;
vSueldo employees.salary%type;
vSueldoMin employees.salary%type;
vSueldoMax employees.salary%type;
vPromedio number(8,2);
vMensaje varchar2(30);
BEGIN
OPEN crEmpleado;
loop
FETCH crEmpleado INTO vNombre, vApellido,
vJob_id, vEmpleado_id, vSueldo;
EXIT WHEN crEmpleado%NOTFOUND;
SELECT min_salary, max_salary into vsueldomin, vsueldomax
FROM jobs
WHERE vjob_id=job_id;
vpromedio:=(vsueldomin + vsueldomax)/2;
IF vsueldo >= vpromedio THEN
vmensaje := 'evaluar carga de trabajo';
ELSE
vmensaje := 'estudiar un aumento';
END IF;
INSERT INTO estudioSueldo (idEmpleado, nombre,
apellido, renta ,promedio, diferencia, mensaje)
VALUES (vEmpleado_id, vNombre, vApellido,
vSueldo, vPromedio, (vSueldo-vPromedio), vMensaje);
end loop;
CLOSE cr_empleado;
END;
-TERCERO MOSTRAR DATOS DE LA TABLA "ESTUDIOSUELDO"
SELECT * FROM estudioSueldo;
No hay comentarios:
Publicar un comentario