Buenas tardes.Tengo un pequeño problema que no se como abordarlo. Resulta que he puesto un bucle que me vaya recorriendo mi cursor para ver si se cumple una condicion.En concreto es lo siguiente:
Tengo que controlar las fechas de inicio y fin de una reserva de un hotel.Si yo quiero actualizar la fecha de inicio de una reserva....tengo que recorrer mi cursor para ver que no hay reservas dentro de ese rango inicio y fin. Es decir, yo tengo la habitacion numero 69 en el hotel 4 con la reserva fecha inicio =16/1/2006 y fecha fin =20/1/2006. Pues bien, a la hora de recorrer el cursor para ver que no hay reservas que se solapen en esa misma habitacion y ese mismo hotel, no se como decirle que no me mire esa misma reserva que yo estoy actualizando porque sino siempre me daria error de actualizacion( al encontrar una reserva que ya esta en ese rango de fechas). No se si me entendeis...es un poco complejo jeje.
Yo he puesto lo siguiente:
OPEN c1;
LOOP
FETCH c1 into num,hotel,habitacion,dni,fini,ffin;
IF (:RESERVA.fecha_inicio between fini and ffin-1) THEN
RAISE error5;
ELSE
COMMIT_FORM;
END IF;
IF (:RESERVA.fecha_fin between fini+1 and ffin) THEN
RAISE error3;
ELSE
COMMIT_FORM;
END IF;
exit when (c1%notfound) or (:RESERVA.num_reserva = num);
next_record;
END LOOP;
close c1;
first_record;
EXCEPTION
WHEN error3 THEN
SET_ALERT_PROPERTY('FECHA_FIN_RANGO',ALERT_MESSAGE_TEXT,'La fecha de fin de la reserva coincide dentro del rango de una reserva con esa misma habitación y ese mismo hotel');
IF SHOW_ALERT ('FECHA_FIN_RANGO')= ALERT_BUTTON1 THEN
RAISE FORM_TRIGGER_FAILURE;
END IF;
WHEN error5 THEN
SET_ALERT_PROPERTY('FECHA_INICIO_RANGO',ALERT_MESSAGE_TEXT,'La fecha de inicio de la reserva coincide dentro del rango de una reserva con esa misma habitación y ese mismo hotel');
IF SHOW_ALERT ('FECHA_INICIO_RANGO')= ALERT_BUTTON1 THEN
RAISE FORM_TRIGGER_FAILURE;
END IF;
END;