----取消房间预订
PROCEDURE CANCELPREBOOK
AS
cursor cur_prebook is
select t.prebookid,t.roomid
from prebook t
where t.valid=0
and t.roomid =-1
and t.scheduledate<sysdate;
CURSOR CUR_HASPREBOOK IS
select t.prebookid,t.roomid
from prebook t
where t.valid=0
AND T.ROOMID<>-1
and t.scheduledate<sysdate;
v_id number;
v_roomid number;
V_STATUS NUMBER;
BEGIN
open cur_prebook;
loop
fetch cur_prebook into v_id,v_roomid;
exit when cur_prebook%notfound;
----取消预订表
update prebook t
set t.valid=1
where t.valid=0
and t.prebookid=v_id;
----取消预订房间
update rooms rm
set rm.status=1
where rm.roomid=v_roomid;
end loop;
close cur_prebook;
----CANCEL HASN'T IN
OPEN CUR_HASPREBOOK;
loop
fetch CUR_HASPREBOOK into v_id,v_roomid;
exit when CUR_HASPREBOOK%notfound;
SELECT T.STATUS INTO V_STATUS
FROM ROOMS T WHERE T.ROOMID=V_ROOMID;
IF V_STATUS=2 THEN
----CANCEL ROOM
UPDATE ROOMS RS SET RS.STATUS=1
WHERE RS.ROOMID=v_roomid;
---CANCEL PREBOOK RECORD
UPDATE PREBOOK BK SET BK.VALID=1
WHERE BK.PREBOOKID= v_id;
END IF;
END LOOP;
CLOSE CUR_HASPREBOOK;
END CANCELPREBOOK;