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ón
drop 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;