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 )
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;