jueves, 1 de septiembre de 2011

Ejercicios propuestos pl/sql de cursores


Ejercicios sobre pl/sql
en la tercera parte se encuentran ejercicios de cursores

http://www.docstoc.com/docs/23962524/Ejercicios-PLSQL-de-ORACLE-1-Variables-y-Entrada-y

Ejercicio de Cursor


--Desarrolle un Cursor, que permita Estudiar los empleados
--cuyo cargo sea finance_manager o programmer.
--Para aquellos que tienen una renta Menor o igual que el promedio
--entre el valor min y max, definido en la tabla jobs
-- debe indicar "estudiar un aumento".
--Para los que tienen una renta superior al promedio
--hay que indicar "evaluar carga de trabajo".
--Generando un registro en la tabla "estudioSueldo" para cada empleado
--En dicha tabla se debe grabar:
--el ID del Empleado, su Nombre, el Apellido
--La renta, la diferencia con el promedio y el comentario


declare
cursor cr_empleado 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(50);
vdiferncia number(8,2);

begin
open cr_empleado;
loop
FETCH cr_empleado INTO vnombre, vapellido, vjob_id, vempleado_id,
vsueldo;
exit when cr_empleado%NOTFOUND;
DBMS_output.put_line(vnombre ||' '|| vapellido ||' '|| vjob_id
||' '|| vempleado_id ||' '|| vsueldo);
--traer el valor min y max para ver si el promedio coincide
select min_salary, max_salary into vsueldomin, vsueldomax
from jobs