Documentos de Académico
Documentos de Profesional
Documentos de Cultura
v_codigo_error number(5);
v_mensaje_error varchar(70);
CURSOR c_vacunatorio IS
SELECT
id_vacunatorio vacunatorio
FROM
vacunatorio;
CURSOR c_empleados (
p_id_vacunatorio VARCHAR2
) IS
SELECT
CASE
WHEN to_char(sysdate,'mm') < 10 THEN replace(to_char(sysdate,'mm'),'0','')
ELSE to_char(sysdate,'mm') END mes,
to_char(sysdate,'yyyy') annio,
numrun_emp run,
id_vacunatorio id_vacunatorio,
sueldo_base_emp sueldo,
round(MONTHS_BETWEEN(SYSDATE,fecing_emp)/12) annios_tr,
id_escolaridad id_esc
FROM
empleado
WHERE
id_vacunatorio = p_id_vacunatorio;
v_contador number(2):=0;
v_annios_tr number(8);
v_carga_f number(8):=0;
v_test number(2);
v_fijo number(4);
v_capa number(8);
v_asig_esc number(8);
v_movil number(1);
v_totalh number(8);
BEGIN
FOR r_vacunatorio IN c_vacunatorio LOOP
v_movil := 0;
v_totalh := r_empleado.sueldo + v_carga_f + v_fijo +
v_annios_tr + v_asig_esc + v_movil;
begin
INSERT INTO beneficios_calc_mes (
mes_proc,
anno_proc,
numrun_emp,
id_vacunatorio,
valor_sueldo_base,
valor_asig_annos,
valor_cargas_fam,
test_pcr,
valor_capac,
valor_colacion,
valor_asig_escolar,
valor_tot_haberes
) VALUES (
r_empleado.mes,
r_empleado.annio,
r_empleado.run,
r_empleado.id_vacunatorio,
r_empleado.sueldo,
v_annios_tr,
v_carga_f,
v_test,
v_capa,
v_fijo,
v_asig_esc,
v_totalh
);
EXCEPTION
WHEN OTHERS THEN
v_codigo_error := SQLCODE;
v_mensaje_error := SQLERRM;
INSERT INTO error_proceso VALUES(
seq_error.nextval,
v_codigo_error ,
v_mensaje_error
);
end;
end loop;
end loop;
end;