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

[0] Índice de Mensajes

Ir a la versión completa