下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLEEXEC SQL SELECT balance INTO :x FROM tickets WHERE flight='A';printf("航班A当前剩余机票数为:%d\n请输入购票数:",x);scanf("%d",&a);x=x-a;if(x<0)EXEC SQL ROLLBACK WORK;printf("票数不够,购票失败!");else{EXEC SQL UPDATE tickets SET (a) ;if(SQLCA.sqlcode<>SUCCESS)EXEC SQL ROLLBACK WORK;else(b) ;}

下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。

EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight='A';

printf("航班A当前剩余机票数为:%d\n请输入购票数:",x);

scanf("%d",&a);

x=x-a;

if(x<0)

EXEC SQL ROLLBACK WORK;

printf("票数不够,购票失败!");

else{

EXEC SQL UPDATE tickets SET (a) ;

if(SQLCA.sqlcode<>SUCCESS)

EXEC SQL ROLLBACK WORK;

else

(b) ;

}


相关考题:

请根据试题的要求,将汇编程序代码中(1)~(8)空缺处的内容填写完整。

下列程序段的功能是实现“学生”表中“年龄”字段值加1Dim Str As StringStr=”________________”Docmd.RunSql Str空白处应填入的程序代码是A.年龄=年龄+1B.Update学生Set年龄=年龄+1C.Set年龄=年龄+1D.Edit学生Set年龄=年龄+

下列程序段的功能是实现“学生”表中“年龄”字段值加1:Dim Str As String Str=””Docmd.RunSQL Str空白处应填入的程序代码是( )。A.年龄=年龄+1B.Update学生Set年龄=年龄+1C.Set年龄=年龄+1D.Edit学生Set年龄=年龄+1

下列程序段的功能是实现"学生"表中"年龄"字段值加1: Dim Str As String (共35题. Str="____________" Docmd.RunSQL Str 空白处应填入的程序代码是A.年龄=年龄+1B.Update 学生 Set 年龄=年龄+1C.Set 年龄=年龄+1D.Edit 学生 Set 年龄=年龄+1

下列程序段的功能是实现“学生”表中“年龄”字段值加1。 DimStrAsStringStr="_________"Docmd.RunSQLStr空白处应填入的程序代码是( )。A.年龄=年龄+1B.Update学生set年龄=年龄+1C.Set年龄=年龄+1D.Edit学生Set年龄=年龄+1

下面给出用户登录的部分代码。请将(6)~(8)空缺处的代码填写完整。

试题五(共15 分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如下表5-1所示:假设某售票网点一次售出a张航班A 的机票,则售票程序的伪指令序列为: R (A, x); W (A, x – a)。根据上述业务及规则,完成下列问题:【问题1】(5 分)若两个售票网点同时销售航班A的机票,在数据库服务器端可能出现如下的调度:A:R1(A, x),R2(A, x),W1(A, x – 1),W2(A, x – 2);B:R1(A, x),R2(A, x),W2(A, x – 2),W1(A, x – 1);C:R1(A, x),W1(A, x – 1),R2(A, x),W2(A, x – 2);其中Ri(A, x),Wi(A, x)分别表示第i个销售网点的读写操作,其余类同。假设当前航班 A 剩余 10 张机票,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。【问题2】(6 分)(1)判定事务并发执行正确性的准则是什么?如何保证并发事务正确地执行?(2) 引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。【问题3】(4 分)下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLEEXEC SQL SELECT balance INTO :x FROM tickets WHERE flight = ‘A’ ;printf("航班A 当前剩余机票数为:%d\n请输入购票数:", x );scanf("%d", a);x = x – a ;if (x0)EXEC SQL ROLLBACK WORK;printf("票数不够,购票失败!");else{EXEC SQL UPDATE tickets SET (a) ;if (SQLCA.sqlcode SUCCESS)EXEC SQL ROLLBACK WORK;else(b) ;}

若停车位表的关系模式为:park(parkno,isused),其中parkno为停车位号,isused为停车位标志,0为空,1为非空。下面是用E-SQL实现的查询空车位的函数Get(),请补全空缺处的代码。SET TRANSACTION ISOLATION LEVEL SERIALIZABLEEXEC SQL DECLARE getblk CURSOR FOR(a);EXEC SQL OPEN getblk;EXEC SQL FETCH getblk INTO:Hparkno;//Hparkno为已声明的主变量IF SQLCA.sqlcode=100 THENEXEC SQL CLOSE getblk; Return NULL;ELSE(b);END IF

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E-SQL编写的部分售票代码: EXEC SQL SELECT balance INTO:x FROM tickets WHERE flight=:flightno; printf("航班%s当前剩余机票数为:%d\n请输入购票数:", flightno,x); scanf("%d",&a); EXEC SQL UPDATE tickets SET balance =x =:a WHERE flight=:flightno;请根据上述描述,完成下列问题。【问题1】上述售票程序,在并发状态下,可能发生什么错误?产生这种错误的原因是什么?【问题2】若将上述代码封装成一个完整的事务,则:(1)在并发请求下的响应效率会存在什么问题?(2)分析产生效率问题的原因。(3)给出解决方案。【问题3】下面是改写的存储过程,其中flightno为航班号;a为购票数;result为执行状态:1表示成功,0表示失败;表tickets中的剩余机票数balance具有大于等于零约束。请补充完整。CREATE PROCEDRUE buy_ticket(char[]flightno IN,( a ), int result OUT)AS BEGIN … UPDATE tickets SET balance=( b ) WHERE flight=flightno; if (sqLcode<>SUCCESS){ //sqLcode为SQL语句的执行状态( c ); result=0; return; } COMMIT;( d )END