
IF anidados en procedure
Publicado por noel (2 intervenciones) el 11/03/2015 23:20:38
Hola q tal muy buenas a todos, soy nuevo por aquí en la web, bueno pues paso a mi problema,
estoy haciendo un procedimiento para validar unas fechas y estoy usando if anidados, el problema es q no se si lo q estoy haciendo este bien, y por ejemplo ya que se cumplieron todas las condiciones, donde puedo meter el else de q si todo eso no se cumple, haga un insert en una tabla
esto es lo q tengo
create or replace procedure prorroga_temporal is
v_id_organizacion prorroga.id_organizacion%TYPE;
v_id_hr prorroga.id_hr%TYPE;
v_hr_period prorroga.hr_period%TYPE;
v_sco_id_incidencia prorroga.id_incidencia%TYPE;
v_fecha_inicio prorroga.fecha_inicio%TYPE;
v_fecha_inicio_pr prorroga.fecha_inicio_pr%TYPE;
v_fecha_fin_pr prorroga.fecha_fin_pr%TYPE;
vaux_id_hr incapacidad.id_hr%TYPE;
vaux_fecha_inicio incapacidad.fecha_inicio%TYPE;
CURSOR tablaprorroga IS
select id_organizacion, id_hr, hr_period, id_incidencia, fecha_inicio, fecha_inicio_pr, fecha_fin_pr
from prorroga where id_organizacion = 'GAME'
and id_hr in (
select id_hr from incapacidad
where id_organizacion = 'GAME'
and hr_period = '1'
)
order by id_hr, fecha_inicio;
BEGIN
OPEN tablaprorroga;
LOOP
FETCH tablaprorroga INTO v_id_organizacion, v_id_hr, v_hr_period, v_id_incidencia, v_fecha_inicio, v_fecha_inicio_pr, v_fecha_fin_pr;
EXIT WHEN tablaprorroga%NOTFOUND;
If (v_id_hr = vaux_id_hr) Then
If (vaux_fecha_inicio = v_fecha_inicio) Then
If (vaux_fecha_inicio = v_fecha_inicio_pr) Then
If (v_fecha_inicio = v_fecha_inicio_pr) Then
If (v_fecha_inicio <> v_fecha_inicio_pr) Then
If (v_fecha_fin_pr = v_fecha_fin_pr -1) Then
COMMIT;
Else
INSERT INTO INCAPACIDADES_TEMPORALES (id_organizacion,id_hr,hr_period, id_incidencia, fecha_inicio, fecha_inicio_pr, fecha_fin_pr)
VALUES (v_id_organizacion, v_id_hr, v_hr_period, v_id_incidencia, v_fecha_inicio, v_fecha_inicio_pr, v_fecha_fin_pr);
End If;
End If;
EndIf;
End If;
End If;
End If;
COMMIT;
END LOOP;
CLOSE tablaprorroga;
COMMIT;
END;
espero me de a explicar para q me puedan orientar, ya soy nuevo en oracle
estoy haciendo un procedimiento para validar unas fechas y estoy usando if anidados, el problema es q no se si lo q estoy haciendo este bien, y por ejemplo ya que se cumplieron todas las condiciones, donde puedo meter el else de q si todo eso no se cumple, haga un insert en una tabla
esto es lo q tengo
create or replace procedure prorroga_temporal is
v_id_organizacion prorroga.id_organizacion%TYPE;
v_id_hr prorroga.id_hr%TYPE;
v_hr_period prorroga.hr_period%TYPE;
v_sco_id_incidencia prorroga.id_incidencia%TYPE;
v_fecha_inicio prorroga.fecha_inicio%TYPE;
v_fecha_inicio_pr prorroga.fecha_inicio_pr%TYPE;
v_fecha_fin_pr prorroga.fecha_fin_pr%TYPE;
vaux_id_hr incapacidad.id_hr%TYPE;
vaux_fecha_inicio incapacidad.fecha_inicio%TYPE;
CURSOR tablaprorroga IS
select id_organizacion, id_hr, hr_period, id_incidencia, fecha_inicio, fecha_inicio_pr, fecha_fin_pr
from prorroga where id_organizacion = 'GAME'
and id_hr in (
select id_hr from incapacidad
where id_organizacion = 'GAME'
and hr_period = '1'
)
order by id_hr, fecha_inicio;
BEGIN
OPEN tablaprorroga;
LOOP
FETCH tablaprorroga INTO v_id_organizacion, v_id_hr, v_hr_period, v_id_incidencia, v_fecha_inicio, v_fecha_inicio_pr, v_fecha_fin_pr;
EXIT WHEN tablaprorroga%NOTFOUND;
If (v_id_hr = vaux_id_hr) Then
If (vaux_fecha_inicio = v_fecha_inicio) Then
If (vaux_fecha_inicio = v_fecha_inicio_pr) Then
If (v_fecha_inicio = v_fecha_inicio_pr) Then
If (v_fecha_inicio <> v_fecha_inicio_pr) Then
If (v_fecha_fin_pr = v_fecha_fin_pr -1) Then
COMMIT;
Else
INSERT INTO INCAPACIDADES_TEMPORALES (id_organizacion,id_hr,hr_period, id_incidencia, fecha_inicio, fecha_inicio_pr, fecha_fin_pr)
VALUES (v_id_organizacion, v_id_hr, v_hr_period, v_id_incidencia, v_fecha_inicio, v_fecha_inicio_pr, v_fecha_fin_pr);
End If;
End If;
EndIf;
End If;
End If;
End If;
COMMIT;
END LOOP;
CLOSE tablaprorroga;
COMMIT;
END;
espero me de a explicar para q me puedan orientar, ya soy nuevo en oracle
Valora esta pregunta


0