首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下: Red(ID,BatchID,SenderID,Money,Receiver
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下: Red(ID,BatchID,SenderID,Money,Receiver
admin
2018-04-19
96
问题
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:
Red(ID,BatchID,SenderID,Money,ReceiverID)
其中ID唯一标识每一个红包;BatchID为发红包的批次,一个BatchID值可以对应多个ID值;SenderID为发红包人的标识;Money为红包中的钱数;ReceiverID记录抢到红包的人的标识。
发红包人一次抛出多个红包,即向红包表中插入多条记录,每条记录表示一个红包,其ReceiverlD值为空值。
抢某个红包时,需要判定该红包记录的ReceiverlD值是否为空,不为空时表示该红包已被抢走,不能再抢,为空时抢红包人将自己的标识写入到ReceiverlD字段中,即为抢到红包。
下面是用SQL实现的抢红包程序的一部分,请补全空缺处的代码。
CREATE PROCEDURE ScrambleRed(IN BatchNo VARCHAR(20), 一一红包批号
IN RecvrNo VARCHAR(20))--接收红包者ID
BEGIN
一一是否已抢过此批红包
if exists ( SELECT * FROM Red
WHERE BatchID=BatchNo AND ReceiverID=RecvrNo)then
return-1;
end if;
一一读取此批派发红包中未领取的红包记录ID
DECLARE NonRecvedNo VARCHAR(30);
DECLARE NonRecvedRed CURSOR FOR
SELECT ID
FROM Red
WHERE BatchID=BatchNo AND ReceiverID IS NULL;
一一打开游标
OPEN NonRecvedRed;
FETCH NonRecvedRed INTO NonRecvedNo;
while not error
--抢红包事务
BEGIN TRANSACTION;
//写入红包记录
UPDATE Red SET ReceiverID=RecvrNO
WHERE ID=NonRecvedNo AND ____(a)____;
//执行状态判定
if<修改的记录数>=1 then
COMMIT;
____(b)___;
return 1;
else
ROLLBACK;
end if;
____(c)___;
end while;
一一关闭游标
CLOSE NonRecvedRed;
return 0;
END
选项
答案
(a)ReceiverlD ISNULL (b)CLOSE NonRecvedRed (c)FETCH NonRecvedRed INTO NonRecvedNo
解析
本问题是用存储过程编写的抢红包事务程序。用户通过调用该存储过程完成抢红包操作。因此,存储过程先查询该用户是否己抢过此批次的红包;然后以游标的方式读取到此批次当前所有未抢的红包(可能是多个),以事务的方式对游标中的当前记录写入用户ID。由于多人同时抢红包,游标所查询到的未抢红包,可能在写入用户ID时,已经被其他人写入,故写入程序应该添加条件“ReceiverlD值为空”,即(a)处应填入“ReceiverlD IS NULL”。如果出现两个及以上用户同时对同一条记录写入,此时会由DBMS进行并发控制,保证第一个响应的用户写入不被覆盖。
根据抢红包规则,一个用户只能抢到一批红包中的一个,因此成功抢到红包后(成功更新一条红包记录),应该退出程序,不能进入下一轮循环再去抢下一个红包。程序中使用了游标,在退出程序前应该关闭游标,因此(b)处应该填写关闭游标的指令“CLOSENonRecvedRed”。
游标操作循环体中的最后一条指令应该是推进游标指针,故(c)处应填写“FETCH NonRecvedRed INTO NonRecvedNo”。
转载请注明原文地址:https://kaotiyun.com/show/brUZ777K
本试题收录于:
数据库系统工程师下午应用技术考试题库软考中级分类
0
数据库系统工程师下午应用技术考试
软考中级
相关试题推荐
阅读下列说明,回答问题一至问题三,将解答填入答题纸的对应栏内。【说明】某公司完成一个工期10周的系统集成项目,该项目包含ABCDE五项任务。项目经理定制了成本预算表(如表1),执行过程中记录了每个时段项目的执行情况(如表2、表3)。(1)
UML提供了4种结构图用于对系统的静态方面进行可视化、详述、构造和文档化,其中(4)是面向对象系统建模中最常用的图,用于说明系统的静态设计视图;当需要说明系统的静态实现视图时,应该选择(5);当需要说明体系结构的静态实施视图时,应该选择(6)。
需求变更提出来之后,接着应该进行下列中的(54)。
在某个信息系统项目中,存在新老系统切换问题,在设置项目计划网络图时,新系统上线和老系统下线之间应设置成(45)的关系。
项目干系人管理的主要目的是(26)。
如下图所示,某公司局域网防火墙由包过滤路由器R和应用网关F组成,下面描述错误的是(13)。
下图是发送者利用不对称加密算法向接收者传送信息的过程,图中k1是(59)。
配置管理系统通常由(53)组成。
项目经理在项目管理过程中需要收集多种工作信息,例如完成了多少工作,花费了多少时间,发生什么样的成本,以及存在什么突出问题等,以便(26)。
信息系统项目完成后,最终产品或项目成果应置于(52)内,当需要在此基础上进行后续开发时,应将其转移到(53)后进行。
随机试题
下列哪一项是节目栏目化播出的基础【】
网络营销管理的推广产品职能可以细分为【】
Ifsomeonesaysyouaresmart,whatdotheymean?Isitagoodthingorsomethingbad?Theanswerisnotaseasyasyoumightth
慢性腹痛的病因包括
胃十二指肠溃疡大出血合并下列何种情况不属必须积极进行手术治疗的范围
正常人尿中可出现的管型是
某公司是一家国有企业,2014年5月5日,经过严格考核,公司招聘了一名出纳小刘。小刘刚毕业于某财经院校会计系,她是本公司财务科长老刘的女儿。由于小刘尚未取得会计从业资格证书,故公司领导要求小刘在一年内必须取得该资格证书,否则将予以辞退。2014年
以下属于公司反收购策略中的管理层防卫策略的有()。Ⅰ.金降落伞策略Ⅱ.积极向其股东宣传反收购的思想Ⅲ.毒九策略Ⅳ.白衣骑士策略
B公司今年的资料如下:资料一:假设不存在优先股,发行在外普通股的加权平均数为500万股。资料二:公司上年销售净利率为16%,总资产周转率为0.5次,权益乘数为2.2,净资产收益率为17.6%。要求:假设目前公司股票的每股市价为9.6元,计算
阅读下列材料并回答问题。材料一:2012年8月24日,《人民日报》“迎接党的十八大”特刊推出广东专刊,专刊全方位展示广东科学发展新风采、新成就,如:先进制造业和现代服务业的“双轮驱动”,工业化和信息化的“量化融合”,珠三角实现“腾笼换鸟”,粤东
最新回复
(
0
)