Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --CREAMOS LA SECUENCIA
- CREATE SEQUENCE SEC_EMP;
- CREATE SEQUENCE SEC_ERRORES;
- CREATE TABLE ERRORES(
- ID NUMBER PRIMARY KEY,
- CODIGO NUMBER,
- MENSAJE VARCHAR2(255),
- FECHA_PROCESO DATE
- );
- DECLARE
- CURSOR C_DEPTOS IS (SELECT DEPARTMENT_ID, DEPARTMENT_NAME FROM DEPARTMENTS);
- V_DESC VARCHAR2(20);
- C_ALTA NUMBER :=0;
- C_MEDIA NUMBER :=0;
- C_BAJA NUMBER :=0;
- V_CODIGO NUMBER;
- V_MENSAJE VARCHAR2(255);
- BEGIN
- FOR X IN C_DEPTOS LOOP
- FOR Y IN (SELECT FIRST_NAME, ROUND((SYSDATE - HIRE_DATE)/365) AS ANIOS FROM EMPLOYEES WHERE DEPARTMENT_ID = X.DEPARTMENT_ID) LOOP
- BEGIN -------------------------
- --AQUI VAMOS A HACER LAS CONDICIONES PARA SABER LA DISPONIBILIDAD
- --RESCATAMOS LA CATEGORIA DESDE LA TABLA, SEGÚN LOS AÑOS QUE LLEVA TRABAJANDO EL EMPLEADO
- SELECT DESCRIPCION INTO V_DESC FROM TRAMO_ANIOS
- WHERE Y.ANIOS BETWEEN ANIOS_INF AND ANIOS_SUP;
- --HACER LAS CONDICIONES CON EL "IF"
- IF V_DESC = 'ALTA' THEN
- C_ALTA := C_ALTA + 1 ;
- END IF;
- IF V_DESC = 'MEDIA' THEN
- C_MEDIA := C_MEDIA + 1;
- END IF;
- IF V_DESC = 'BAJA' THEN
- C_BAJA := C_BAJA + 1;
- END IF;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- V_CODIGO := SQLCODE;
- V_MENSAJE := 'EL EMPLEADO ' || Y.FIRST_NAME || ' ESTA FUERA DEL RANGO DE AÑOS';
- INSERT INTO ERRORES VALUES (SEC_ERRORES.NEXTVAL,V_CODIGO,V_MENSAJE, SYSDATE);
- END; -------------------------
- END LOOP;
- INSERT INTO DISPONIBILIDAD_EMPLEADO VALUES (SEC_EMP.NEXTVAL,X.DEPARTMENT_NAME, C_ALTA,C_MEDIA,C_BAJA);
- C_ALTA :=0;
- C_MEDIA :=0;
- C_BAJA :=0;
- END LOOP;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement