首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下: Red(ID,BatchID,SenderID,Money,Receiver
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下: Red(ID,BatchID,SenderID,Money,Receiver
admin
2018-04-19
70
问题
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:
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://www.kaotiyun.com/show/brUZ777K
本试题收录于:
数据库系统工程师下午应用技术考试题库软考中级分类
0
数据库系统工程师下午应用技术考试
软考中级
相关试题推荐
阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】某信息系统项目包括如下十个活动,各活动的历时、活动逻辑关系见下表:在项目开始前,客户希望将项目工期压缩为19天,并愿意承担所发生的所有额外费用。经过对
阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】2018年1月,某系统集成公司中标本市某地铁线路列车乘客信息系统项目,内容包括地铁公司运营中心节目播放控制软件、地铁列车节目接收软件及服务器、播放终端等硬件设施的搭建
阅读下列说明,回答问题,将解答填入答题纸的对应栏内。【说明】2019年3月某公司中标当地轨道交通的车载广播系统项目,主要为地铁列车提供车载广播、报警、对讲及电子地图系统。公司任命具有丰富经验的老王担任项目经理。老王从各部门抽调人员成立了项目组,安排质量
软件的维护并不只是修正错误。软件测试不可能揭露旧系统中所有潜伏的错误,所以这些程序在使用过程中还可能发生错误,诊断和更正这些错误的过程称为(24);为了改进软件未来的可维护性或可靠性,或者为了给未来的改进提供更好的基础而对软件进行修改,这类活动称为(25)
下列要素中,不属于.DFD的是(21)。当使用DFD对一个工资系统进行建模时,(22)可以被认定为外部实体。
由于政府的一项新规定,某项目的项目经理必须变更该项目的范围。项目目标已经做了若干变更。项目经理已经对项目的技术和管理文件做了必要的修改,他的下一步应该是(32)。
项目干系人管理的主要目的是(26)。
假设甲、乙二人合作开发了某应用软件,甲为主要开发者。该应用软件所得收益合理分配后,甲自行将该软件作为自己独立完成的软件作品发表,甲的行为(16)。
如下图所示,某公司局域网防火墙由包过滤路由器R和应用网关F组成,下面描述错误的是(13)。
某软件公司项目A的利润分析如下表所示。设贴现率为10%,第二年的利润挣现值是(9)元。
随机试题
对每一个补伤处均用电火花检漏仪进行漏点检查,检漏电压为()。
根据我国《继承法》第20条的规定,公证遗嘱可以由()而变更。
频谱多普勒技术测量大动脉血流时做法意义不大的是
A、刺痛B、胀痛C、隐痛D、重痛E、掣痛气血不足所致的疼痛()
()的主要投资对象是资本市场上的上市股票与债券,货币市场上的短期票据与银行同业拆借,以及金融期货、黄金、期权交易、不动产等。
你是幼儿园带队老师,带领孩子们去春游。黄昏集合时发现少了3个小孩,怎么都找不到。这个时候你怎么处理?
试分析货币传导机制的信用传导渠道。
在由发展中国家向经济发达国家前进的过程中,大量资本支持是必不可少的条件,而高储蓄率是获得大量资本的必要条件。就目前来说,中国正处于经济起飞时期,因此,储蓄率高是当前经济发展中的一种正常且合理的现象。由此可以推出以下哪项?
以下关于多重窗体程序的叙述中,错误的是( )。
A、Itinvolvedafatheroftwo.B、Thefatherwasshot.C、Thefatherchangedlanescarelessly.D、Thefatherrefusedtogetoutof
最新回复
(
0
)