You are on page 1of 4

Creacion de tabla

create table T_empleado


as
select e.employee_id ID_Emp,e.first_name Nombre,e.last_name Apellido,
e.salary, e.commission_pct Comision, e.hire_date FechaContrato
from hr.employees e
where e.commission_pct>0;
alter table T_empleado
add DesSue varchar2(50);
alter table T_empleado
add constraint pk_id Primary Key(Id_Emp);
alter table T_empleado
add Aumento number(10,2);

PROCEDIMIENTOS

1) DAR UN BONO A UN EMPLEADO SEGUN SU SUELDO

create or replace procedure BONO_SUELDO(
p_EMPLOYEE_ID IN T_empleado.Id_Emp%TYPE
) is
salario NUMBER;
BONUS number;
begin
SELECT e.salary INTO salario
FROM T_empleado e
WHERE e.id_emp = p_EMPLOYEE_ID;

IF (salario >= 1000) THEN
BONUS := 10;
ELSE
BONUS := 20;
END IF;
UPDATE T_empleado e
SET e.aumento = e.salary + (e.salary * BONUS/100)
WHERE e.id_emp = p_EMPLOYEE_ID;
COMMIT;
end BONO_SUELDO;

2) INSERTAR UN NUEVO EMPLEADO A LA TABLA T_EMPLEADO

create or replace procedure NuevoEmp
(
p_cod IN T_empleado.Id_Emp%TYPE,
p_nom IN T_empleado.Nombre%TYPE,
p_ape IN T_empleado.Apellido%TYPE,
p_cont IN T_empleado.Fechacontrato%TYPE,
p_comi IN T_empleado.Comision%TYPE,
p_sueldo IN T_empleado.Salary%TYPE

)
is
p_des varchar(50);

begin
IF(p_sueldo < 5000) THEN
p_des := 'Sueldo Bajo';
ELSE p_des := 'Sueldo Alto';
END IF;
INSERT INTO T_empleado
(
id_emp,
nombre,
apellido,
salary,
comision,
fechacontrato,
dessue,
aumento
)

values
(
p_cod,
p_nom,
p_ape,
p_sueldo,
p_comi,
p_cont,
p_des,
''
);
commit;
end NuevoEmp;

3) AUMENTO EN LA COMISION A EMPLEADOS POR DISTINCION DE LA ANTIGUEDAD EN EL
TRABAJO

CREATE OR REPLACE PROCEDURE Aum_Comision(
P_IdEmp IN T_empleado.Id_Emp%TYPE
)
IS
anio NUMBER;
aucom NUMBER;
BEGIN
SELECT to_char(e.fechacontrato,'YYYY') INTO anio
FROM T_empleado e
WHERE e.id_emp = P_IdEmp;

IF(anio<1995)THEN
aucom :=2.0;
ELSE
aucom :=0.5;
END IF;

UPDATE T_empleado e
SET e.comision=e.comision+(e.comision * aucom)
WHERE e.id_emp = P_IdEmp;
COMMIT;

END Aum_Comision;

4) ELIMINAR EMPLEADO CON FECHA DE CONTRATO MAYOR A 2010


CREATE OR REPLACE PROCEDURE Elim_Empleado(
P_IdEmp IN T_empleado.Id_Emp%TYPE
)
IS
anio NUMBER;
BEGIN
SELECT to_char(e.fechacontrato,'YYYY') INTO anio
FROM T_empleado e
WHERE e.id_emp = P_IdEmp;

IF(anio>2010)THEN
DELETE
FROM T_empleado e
WHERE e.id_emp = P_IdEmp ;
COMMIT ;
dbms_output.put_line('EMPLEADO ELIMINADO CORRECTAMENTE');
ELSE
dbms_output.put_line('EL EMPLEADO NO PUEDE SER ELIMINADO POR
MOTIVOS DE ANTIGUEDAD');
END IF;

END Elim_Empleado;

5) MOSTRAR EMPLEADOS SEGUN EL CODIGO_ID

CREATE OR REPLACE PROCEDURE Mostrar_Empleado
(
P_ID IN T_EMPLEADO.ID_EMP%TYPE,
P_NOMBRE OUT T_EMPLEADO.NOMBRE%TYPE,
P_APELLIDO OUT T_EMPLEADO.APELLIDO%TYPE,
P_SALARY OUT T_EMPLEADO.SALARY%TYPE,
P_COMISION OUT T_EMPLEADO.COMISION%TYPE,
P_FECONTRA OUT T_EMPLEADO.FECHACONTRATO%TYPE,
P_DESSUE OUT T_EMPLEADO.DESSUE%TYPE,
P_AUME OUT T_EMPLEADO.AUMENTO%TYPE
)
IS

BEGIN

IF(P_ID<100)THEN
dbms_output.put_line('NO ESTA REGISTRADO EMPLOYEE_ID');
ELSE

SELECT
E.NOMBRE, E.APELLIDO, E.SALARY, E.COMISION, E.FECHACONTRATO,
E.DESSUE, E.AUMENTO
INTO
P_NOMBRE, P_APELLIDO, P_SALARY, P_COMISION, P_FECONTRA,
P_DESSUE, P_AUME
FROM T_EMPLEADO E
WHERE E.ID_EMP = P_ID;

END IF;

END Mostrar_Empleado;

You might also like