Está en la página 1de 4

/*

Una empresa almacena los datos de sus empleados en una tabla llamada "empleados".

1- creamos table empleados;


*/
drop table empleados;
/
create table empleados(
id number(4)not null constraint pk_emp_id primary key,
nombre varchar2(20),
apellido varchar2(20),
sueldo number(10,2),
fechaingreso date);
/*
2.-Ingrese algunos registros (minimo 20):
*/
insert into empleados values(1,'Juan','Perez',2500,'10/SEP/2010');
insert into empleados values(2,'Luis','Lopez',1500,'12/MAY/2013');
insert into empleados values(3,'Marta','Perez',5000,'25/AUG/2012');
insert into empleados values(4,'Susana','Garcia',4000,'05/MAY/2011');
insert into empleados values(5,'Carlos','Bahena',2500,'24/OCT/2010');
insert into empleados values(6,'Laura','Barcenas',3000,'10/SEP/2009');
insert into empleados values(7,'Luis','Cano',3090,'12/MAY/2008');
insert into empleados values(8,'Diego','Dominguez',5000,'25/AUG/2007');
insert into empleados values(9,'Hector','Rivera',7800,'05/MAY/2006');
insert into empleados values(10,'Reynaldo','Moreno',4900,'24/OCT/2005');
insert into empleados values(11,'Oscar','Camarillo',1300,'10/SEP/2004');
insert into empleados values(12,'Sergio','Bustamante',1300,'12/MAY/2002');
insert into empleados values(13,'Marta','Carranza',2500,'25/AUG/2013');
insert into empleados values(14,'Abeel','Garcia',3400,'05/MAY/2002');
insert into empleados values(15,'Jose Maria','Botello',4400,'24/OCT/2001');
insert into empleados values(16,'Julian','Delgado',5300,'10/SEP/2000');
insert into empleados values(17,'Nayeli','Evangelista',6300,'12/MAY/1999');
insert into empleados values(18,'Sayuri','Bahena',7500,'25/AUG/1990');
insert into empleados values(19,'Rocio','Benitez',8400,'05/MAY/2017');
insert into empleados values(20,'Jose Maria','Flores',9400,'24/OCT/2015');
/
/*3- Cree un procedimiento almacenado llamado "proc_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.*/

R=

CREATE OR REPLACE PROCEDURE


proc_empleados_aumentarsueldo(ayear in number,
aporcentaje in number)
is
begin
update empleados
set sueldo=sueldo+(sueldo*aporcentaje/100)
where (extract(year from sysdate)-extract(year from fechaingreso))>ayear;
DBMS_OUTPUT.PUT_LINE(' UPDATE ' || SQL%ROWCOUNT
|| ' row ');
end;
/
--4- Ejecute el procedimiento creado anteriormente.
--ingrese para el parametro "ayear" el valor 10 y para el parametro "aporentaje" el
valor 25
/

R=

begin
proc_empleados_aumentarsueldo(10,25);
end;

/*
5- Verifique que los sueldos de los empleados con m�s de 10 a�os en la empresa han
aumentado un 24%
--

R=

select * from empleados where (sysdate-fechaingreso)/365>10;

*/
/
--6- Ejecute el procedimiento creado anteriormente enviando otros valores como
par�metros (por ejemplo, 20 y 40)

R=

begin
proc_empleados_aumentarsueldo(20,40);
end;

/
--7- Verifique que los sueldos de los empleados con m�s de 20 a�os en la empresa
han aumentado un 10%

R= select * from empleados where (sysdate- fechaingreso)/365 >20;

--8- Ejecute el procedimiento almacenado "proc_empleados_aumentarsueldo" sin


par�metros
--y explique el error brevemente

R=

begin
proc_empleados_aumentarsueldo();
end;
/

--9- Cree un procedimiento almacenado llamado "proc_ingresar_empleados" que ingrese


un empleado en la tabla "empleados",
--debe recibir valor para el nombre, apellido y almacenar valores nulos en los
campos "sueldo" y "fechaingreso"
--el id debe de incrementarlo en uno automaticamenete.

R=

create or replace PROCEDURE proc_ingresar_empleados (v_nombre VARCHAR2, v_apellido


VARCHAR2)
is
v_id empleados.id% TYPE;
BEGIN
SELECT max(id) into v_id
FROM empleados;

v_id := v_id + 1;

INSERT into empleados


values (v_id, v_nombre, v_apellido, null, null);

end;
/
--10- Ejecute el procedimiento creado anteriormente y verifique si se ha ingresado
en "empleados" un nuevo registro
R=

begin
proc_ingresar_empleados('&Nombre','&Apellido');
end;

/
--11- Reemplace el procedimiento almacenado llamado "proc_empleados_ingresar" para
que ingrese un empleado en la tabla "empleados",
--esta vez debe de almcenar la fechaingreso y debe ser igual ala fecha actual de
captura, y un sueldo de 7000.

R=

create or replace PROCEDURE proc_ingresar_empleados (v_nombre VARCHAR2, v_apellido


VARCHAR2)
is
v_id empleados.id% TYPE;
BEGIN
SELECT max(id) into v_id
FROM empleados;

v_id := v_id + 1;

INSERT into empleados


values (v_id, v_nombre, v_apellido, 7000, sysdate);

end;
/

--12- Ejecute el procedimiento creado anteriormente envi�ndole valores para los


par�metros y verifique si se ha ingresado en "empleados" un nuevo registro
-- ingrese su nombre y apelllido como parametros

R=
begin
proc_ingresar_empleados('&Nombre','&Apellido');
end;
/

--13- Cree (o reemplace) un procedimiento almacenado que reciba un id y elimine de


la tabla "empleados" el empleado que coincida con dicho id
R=
create or REPLACE PROCEDURE proc_elimina_emp(id_emp empleados.id% TYPE)
is
BEGIN
DELETE empleados
WHERE id = id_emp;
end;
/
--14- Elimine un empleado empleando con el procedimiento del punto anterior

R=
begin
proc_elimina_emp('&id_nombre');
end;
/

También podría gustarte