问答题
下面是实现预订业务的程序,请补全空缺处的代码。其中主变量“:Cid”、“:Bdate”、“:Edate”、“:Rtype”、“:Num”分别代表身份证号、起始日期、结束日期、房间类别和订房数量。
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
UPDATE 空房表
SET 数量=数量-:Num
WHERE ______;
if error then {ROLLBACK; return -1; }
INSERT INTO 预订表 VALUES (:cid, :Bdate, :Edate, :Rtype, :Num);
if error then {ROLLBACK; return -2; }
______;
【正确答案】 房间类别=:Rtype AND 日期 BETWEEN :Bdate AND :Edate
COMMIT :retum 0;
【答案解析】 SQL语句“SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;”是SQL提供的事务隔离级别之一。它表示只允许事务读已提交的数据,并且在两次读同一数据时不允许其他事务修改此数据。依题意,结合题干给出的关键信息“(1)客户查询指定日期内所有类别的空余房间数,系统显示空房表(日期,房间类别,数量)中的信息”可得,空缺处应填入“房间类别=:Rtype AND 日期 BETWEEN :Bdate AND :Edate”。
在程序中,事务是以COMMIT语句或ROLLBACK语句结束。结合该程序中已给出的代码“if error then {ROLLBACK; return -1;)”和“if error then {ROLLBACK; return -2;}”可得,空缺处应填入“COMMIT; return 0;”。