94 - Procedimientos almacenados (parámetros de entrada) |
Una empresa almacena los datos de sus empleados en una tabla llamada "empleados".
1- Eliminamos la tabla y la creamos:
drop table empleados; create table empleados( documento char(8), nombre varchar2(20), apellido varchar2(20), sueldo number(6,2), fechaingreso date );
2- Ingrese algunos registros:
insert into empleados values('22222222','Juan','Perez',300,'10/10/1980'); insert into empleados values('22333333','Luis','Lopez',300,'12/05/1998'); insert into empleados values('22444444','Marta','Perez',500,'25/08/1990'); insert into empleados values('22555555','Susana','Garcia',400,'05/05/2000'); insert into empleados values('22666666','Jose Maria','Morales',400,'24/10/2005');
3- Cree un procedimiento almacenado llamado "pa_empleados_aumentarsueldo". Debe incrementar el sueldo de los empleados con cierta cantidad de años en la empresa (parámetro "ayear" de tipo numérico) en un porcentaje (parámetro "aporcentaje" de tipo numerico); es decir, recibe 2 parámetros.
4- Ejecute el procedimiento creado anteriormente.
5- Verifique que los sueldos de los empleados con más de 10 años en la empresa han aumentado un 20%
6- Ejecute el procedimiento creado anteriormente enviando otros valores como parámetros (por ejemplo, 8 y 10)
7- Verifique que los sueldos de los empleados con más de 8 años en la empresa han aumentado un 10%
8- Ejecute el procedimiento almacenado "pa_empleados_aumentarsueldo" sin parámetros
9- Cree un procedimiento almacenado llamado "pa_empleados_ingresar" que ingrese un empleado en la tabla "empleados", debe recibir valor para el documento, el nombre, apellido y almacenar valores nulos en los campos "sueldo" y "fechaingreso"
10- Ejecute el procedimiento creado anteriormente y verifique si se ha ingresado en "empleados" un nuevo registro
11- Reemplace el procedimiento almacenado llamado "pa_empleados_ingresar" para que ingrese un empleado en la tabla "empleados", debe recibir valor para el documento (con valor por defecto nulo) y fechaingreso (con la fecha actual como valor por defecto), los demás campos se llenan con valor nulo
12- Ejecute el procedimiento creado anteriormente enviándole valores para los 2 parámetros y verifique si se ha ingresado en "empleados" un nuevo registro
13- Ejecute el procedimiento creado anteriormente enviando solamente la fecha de ingreso y vea el resultado
Oracle toma el valor enviado como primer argumento e intenta ingresarlo en el campo "documento", muestra un mensaje de error indicando que el valor es muy grande, ya que tal campo admite 8 caracteres.
14- Cree (o reemplace) un procedimiento almacenado que reciba un documento y elimine de la tabla "empleados" el empleado que coincida con dicho documento
15- Elimine un empleado empleando el procedimiento del punto anterior
16- Verifique la eliminación
Ver solucióndrop table empleados; create table empleados( documento char(8), nombre varchar2(20), apellido varchar2(20), sueldo number(6,2), fechaingreso date ); insert into empleados values('22222222','Juan','Perez',300,'10/10/1980'); insert into empleados values('22333333','Luis','Lopez',300,'12/05/1998'); insert into empleados values('22444444','Marta','Perez',500,'25/08/1990'); insert into empleados values('22555555','Susana','Garcia',400,'05/05/2000'); insert into empleados values('22666666','Jose Maria','Morales',400,'24/10/2005'); create or replace procedure pa_empleados_aumentarsueldo(ayear in number, aporcentaje in number) as begin update empleados set sueldo=sueldo+(sueldo*aporcentaje/100) where (extract(year from current_date)-extract(year from fechaingreso))>ayear; end; / execute pa_empleados_aumentarsueldo(10,20); select *from empleados; execute pa_empleados_aumentarsueldo(8,10); select *from empleados; execute pa_empleados_aumentarsueldo; create or replace procedure pa_empleados_ingresar (adocumento in char, anombre in varchar2, aapellido in varchar2) as begin insert into empleados values(adocumento, anombre, aapellido, null,null); end; / execute pa_empleados_ingresar('30000000','Ana', 'Acosta'); select *from empleados; create or replace procedure pa_empleados_ingresar (adocumento in char default null, afecha in date default current_date) as begin insert into empleados values(adocumento, null, null, null,afecha); end; / execute pa_empleados_ingresar('32222222','10/10/2007'); select *from empleados; execute pa_empleados_ingresar ('15/12/2000'); create or replace procedure pa_empleado_eliminar(adocumento in varchar2) as begin delete from empleados where documento=adocumento; end; / execute pa_empleado_eliminar('30000000'); select *from empleados;