试题详情

阅读下列说明,回答问题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