首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下: Red(ID,BatchID,SenderID,Money,Receiver
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下: Red(ID,BatchID,SenderID,Money,Receiver
admin
2018-04-19
38
问题
某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:
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://jikaoti.com/ti/rVN7FFFM
本试题收录于:
数据库系统工程师下午应用技术考试题库软考中级分类
0
数据库系统工程师下午应用技术考试
软考中级
相关试题推荐
阅读下列说明,回答问题,将解答填入答题纸的对应栏内。【说明】A公司中标某系统集成项目,正式任命王伟担任项目经理。王伟是资深的技术专家,在公司各部门具有较高的声望。接到任命后,王伟组建了项目团队。除服务器工程师小张是新招聘的外,其余项目组成员都是各个团
阅读下列说明,回答问题一至问题三,将解答填入答题纸的对应栏内。【说明】某公司完成一个工期10周的系统集成项目,该项目包含ABCDE五项任务。项目经理定制了成本预算表(如表1),执行过程中记录了每个时段项目的执行情况(如表2、表3)。针对项
阅读下列说明,回答问题一至问题三,将解答填入答题纸的对应栏内。【说明】某公司完成一个工期10周的系统集成项目,该项目包含ABCDE五项任务。项目经理定制了成本预算表(如表1),执行过程中记录了每个时段项目的执行情况(如表2、表3)。项目执
阅读下列说明,回答问题一至问题三,将解答填入答题纸的对应栏内。 【说明】 2019年3月某公司中标当地轨道交通的车载广播系统项目,主要为地铁列车提供车载广播、报警、对讲及电子地图系统。公司任命具有丰富经验的老王担任项目经理。老王从各部门抽调
需求变更提出来之后,接着应该进行下列中的(54)。
下列中的(48)表述的是风险的两个基本属性。
项目小组建设对于项目的成功很重要,因此,项目经理想考查项目小组工作的技术环境如何。有关信息可以在(44)中找到。
项目经理已经对项目进度表提出了几项修改。在某些情况下,进度延迟变得严重时,为了确保获得精确的绩效衡量信息,项目经理应该尽快(36)。
为保障数据的存储和传输安全,需要对一些重要数据进行加密。由于对称密码算法(9),所以特别适合对大量的数据进行加密。国际数据加密算法IDEA的密钥长度是(10)位。
随机试题
合伙律师事务所的特征是
患者女性,43岁,月经量增多伴经期延长4个月,晨起扪及下腹部包块1天。妇科检查示子宫增大如孕3+月大小,无压痛,表面不平,活动度可,双附件区未触及肿物。若妇科B型超声提示子宫增大,肌间多个低回声区,子宫内膜厚0.8cm,双侧卵巢正常大小。最可能的诊断是
某女,20岁,因高考落榜出现情志抑郁不畅,继之性情急躁,无故两眼怒视,时而骂詈号叫,不避亲疏。诊见面红目赤,舌质红,苔黄腻,脉滑数。若病人日久不愈,症见情绪躁扰不宁,多言不序,妄见妄闻,面色晦滞,舌质紫暗,苔薄黄,脉弦细,宜用
徐某因犯故意伤害罪,于2007年11月21日被法院判处有期徒刑1年,缓期2年执行。在缓刑考验期限内,徐某伙同他人无故殴打学生傅某,致傅某轻微伤。当地公安局于2008年4月3日决定对徐某行政拘留15日,并于当日开始执行该行政拘留决定。行政拘留结束后,法院撤销
输气压力为1.2MPa的燃气管道为()燃气管道。
下列属于办理支付结算主体的是()。
个人隐私是指个人不为人知的家庭住址、联系电话、婚姻、经历、财务状况及其他相关情况。()
一般的,表达情绪和情感的最主要的表情形式是()
证明:曲线上任一点的切线的横截距与纵截距之和为2。
Thedecadesafter1830wereaperiodofdisintegrationanduncertaintyinGermanphilosophy.Foralmosthalfacenturyidealist
最新回复
(
0
)