Está en la página 1de 1

PROCEDURE PRC_DMHR_PERFIL_AGRUP_T IS

vFase VARCHAR2(5) :='Carga';


vProceso VARCHAR2(50):='PCK_DM_LOAD_INFOTYPES.PRC_DMHR_PERFIL_AGRUP_T';
vQuerySQL VARCHAR2(32000);
agrup_fun VARCHAR2(9);
vNum NUMBER;

CURSOR C1 IS select PERFIL, FECHA_REG, MES, ANIO from DMHRV2_PERFIL_T order by


PERFIL, FECHA_REG asc ;

BEGIN
vQuerySQL:= 'TRUNCATE TABLE DMHRV2_PERFIL_AGRUP_T';
PKG_DM_EXEC.EJECUTAR_SQL(vQuerySQL, vProceso, vFase);

FOR V_REG in C1 loop


BEGIN
SELECT COUNT(*) INTO vNum FROM DMHRV2_AGRUP_FUNCNAL_POSCN_T agr where
agr.OBJID = V_REG.PERFIL and V_REG.FECHA_REG = agr.FECHA_REG;

IF vNum > 0 THEN


BEGIN
INSERT INTO DMHRV2_PERFIL_AGRUP_T (PERFIL, AGRUP_FUN, FECHA_REG, MES,
ANIO)SELECT V_REG.PERFIL, agr.HILFM, V_REG.FECHA_REG,V_REG.MES, V_REG.ANIO
from DMHRV2_AGRUP_FUNCNAL_POSCN_T agr where agr.OBJID = V_REG.PERFIL
and V_REG.FECHA_REG = agr.FECHA_REG;

END;
ELSE
BEGIN
INSERT INTO DMHRV2_PERFIL_AGRUP_T(PERFIL, AGRUP_FUN, FECHA_REG, MES,
ANIO) SELECT V_REG.PERFIL, agrup.HILFM, V_REG.FECHA_REG,V_REG.MES, V_REG.ANIO
FROM DMHRV2_PERFIL_T perf , (SELECT DISTINCT UO, POSICION, FECHA_REG
FROM DMHRV2_MATRIZ_TRABAJADOR_T) matr, DMHRV2_AGRUPACION_FNCIONAL_T agrup where
perf.PERFIL = matr.POSICION and matr.UO = agrup.OBJID and
perf.FECHA_REG = matr.FECHA_REG and matr.FECHA_REG = agrup.FECHA_REG and
perf.PERFIL=V_REG.PERFIL and perf.FECHA_REG=V_REG.FECHA_REG;

END;
END IF;
EXCEPTION
WHEN OTHERS THEN
PKG_DM_LOG.INSERTAR_LOG(vFase , 'Error ', SQLCODE || ' ' ||
V_REG.PERFIL || ' ' ||V_REG.FECHA_REG || ' ' || SQLERRM, vProceso, 'WARN');
END;
END LOOP;

EXCEPTION
WHEN OTHERS THEN

PKG_DM_LOG.INSERTAR_LOG(vFase , 'Error ', SQLCODE || ' ' ||


SQLERRM, vProceso, 'ERROR');
END PRC_DMHR_PERFIL_AGRUP_T;

También podría gustarte