92 - Procedimientos Almacenados (crear- ejecutar)


Primer problema:

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),
  cantidadhijos number(2,0),
  fechaingreso date,
  primary key(documento)
 );

2- Ingrese algunos registros:

 insert into empleados values('22222222','Juan','Perez',200,2,'10/10/1980');
 insert into empleados values('22333333','Luis','Lopez',250,0,'01/02/1990');
 insert into empleados values('22444444','Marta','Perez',350,1,'02/05/1995');
 insert into empleados values('22555555','Susana','Garcia',400,2,'15/12/2018');
 insert into empleados values('22666666','Jose Maria','Morales',500,3,'25/08/2015');

3- Cree (o reemplace) el procedimiento almacenado llamado "pa_aumentarsueldo" que aumente los sueldos inferiores al promedio en un 20%

4- Ejecute el procedimiento creado anteriormente

5- Verifique que los sueldos han aumentado

6- Ejecute el procedimiento nuevamente

7- Verifique que los sueldos han aumentado

8- Elimine la tabla "empleados_antiguos"

9- Cree la tabla "empleados_antiguos"

 create table empleados_antiguos(
  documento char(8),
  nombre varchar2(40)
);

10- Cree (o reemplace) un procedimiento almacenado que ingrese en la tabla "empleados_antiguos" el documento, nombre y apellido (concatenados) de todos los empleados de la tabla "empleados" que ingresaron a la empresa hace más de 10 años

11- Ejecute el procedimiento creado anteriormente

12- Verifique que la tabla "empleados_antiguos" ahora tiene registros (3 registros)

Ver solución

  drop table empleados;

 create table empleados(
  documento char(8),
  nombre varchar2(20),
  apellido varchar2(20),
  sueldo number(6,2),
  cantidadhijos number(2,0),
  fechaingreso date,
  primary key(documento)
 );

 insert into empleados values('22222222','Juan','Perez',200,2,'10/10/1980');
 insert into empleados values('22333333','Luis','Lopez',250,0,'01/02/1990');
 insert into empleados values('22444444','Marta','Perez',350,1,'02/05/1995');
 insert into empleados values('22555555','Susana','Garcia',400,2,'15/12/2000');
 insert into empleados values('22666666','Jose Maria','Morales',500,3,'25/08/2005');

 create or replace procedure pa_aumentarsueldo
 as
 begin
   update empleados set sueldo=sueldo+(sueldo*0.2)
   where sueldo<(select max(sueldo) from empleados);
 end;
 /

 exec pa_aumentarsueldo;

 select *from empleados;

 exec pa_aumentarsueldo;

 select *from empleados;

 drop table empleados_antiguos;

 create table empleados_antiguos(
  documento char(8),
  nombre varchar2(40)
);

 create or replace procedure pa_empleados_antiguos
 as
 begin
  insert into empleados_antiguos
  select documento,nombre||' '||apellido
   from empleados
   where (extract(year from current_date)-extract(year from fechaingreso))>10;
 end;
 /

 execute pa_empleados_antiguos;

 select * from empleados_antiguos;

 


Retornar