Bases de Datos > Oracle
No Mirar Un Registro
(1/1)
sneider:
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:
--- Código: Text --- 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;
JuanK:
maneja un id unico por reserva y cuando hagas el cursor le dices que traiga todas menos la actual.
sneider:
Hola Juank. Me has iluminado y al final lo he conseguido. Al estar en fase de aprendizaje me cuesta bastante pillar las cosas. Pero vamos...estoy aprendiendo un monton. En breve os seguire escribiendo, no creo ke tarde muxo xDD
Gracias.
JuanK:
ok, estare atento en lo que pueda.
Navegación
Ir a la versión completa