用看的、听的学真题

study by eyes and ears.

  1. 首页
  2. 数据库系统工程师
  3. 2015年05月数据库系统工程师考试下午真题【应用技术】
  4. 真题详解

2015年05月数据库系统工程师考试下午真题【应用技术】(第5题) 收藏

【5】  阅读下列说明,回答下列问题。
【说明】
  某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为E-SQL编写的部分售票代码:
  ……
  EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight= :flightno;
  printf("航班%s当前剩余机票数为:%dn请输入购票数:", flightno, x);
  scanf("%d",&a );
  EXEC SQL UPDATE tickets SET balance=:x- :a WHERE flight= :flightno;
  请根据上述描述,完成下列问题。

问题1 (5.0分)

  上述售票程序,在并发状态下,可能发生什么错误?产生这种错误的原因是什么?
暂无

问题2 (6.0分)

  若将上述代码封装成一个完整的事务,则:
  (1)在并发请求下的响应效率会存在什么问题?
  (2)分析产生效率问题的原因。
  (3)给出解决方案。
暂无

问题3 (4.0分)

  下面是改写的存储过程,其中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
暂无
广告位