阅读下列说明,回答问题,将解答填入答题纸的对应栏内。 【说明】 某网上销售系统的部分关系模式如下: 订单表:orders(o_no,o_date,o_time,p_no,m_no,p_price,nums,amt,status)。其中属性含义分别为:订单号

admin2021-02-03  45

问题 阅读下列说明,回答问题,将解答填入答题纸的对应栏内。
【说明】
某网上销售系统的部分关系模式如下:
订单表:orders(o_no,o_date,o_time,p_no,m_no,p_price,nums,amt,status)。其中属性含义分别为:订单号、订单日期、订单时间、产品编码、供应商编码、产品价格、产品数量、订单金额、订单状态(0-未处理、1-已处理、2-已取消)。
产品表:products(p_no,p_name,p_type,price,m_no,p_nums)。其中属性含义分别为:
产品编码、产品名称、产品类型、产品价格、供应商编码、库存数量。
节假日时,由供应商提供商品打折后的新价格,数据存放在临时表中,该临时表的表名为tmp_prices(不同供应商有不同的临时表),其关系模式如下:
tmp_prices(p_no,t_price,m_no);
后台维护人员需要根据供应商填写在tmp_prices中的数据来更新产品表中某些产品的价格。下面是基于游标,用SQL实现的价格更新程序,请补全空缺处的代码。
CREATE PROCEDURE UpdatePrice()
DECLARE
Pno    VARCHAR(10);
Pprice real(6,2);
Mno    VARCHAR(10);
____(a)____upPrice IS
SELECT p_no,t_price,m_no FROM tmp_prices;
BEGIN
(b)  upPrice;
LOOP
FETCH upPrice INTO ___(c)_____;
IF NOTFOUND DO BREAK//FETCH操作无数据
UPDATE products SET price=Pprice WHERE p_no=Pno and m_no=Mno;
if error//error是由DBMS提供的上一句SQL的执行状态
BEGIN
ROLLBACK;
RETURN -1;
END
END L00P
CLOSE upPrice;
(d);
END;

选项

答案(a)cursor (b)open (c)Pno,Pprice,Mno (d)commit

解析 本题考查数据库设计中存储过程和事务并发的相关知识及应用。
本问题考查存储过程和游标的基本知识。题干描述中已经给出了关系模式和具体的需求描述,给出了使用游标的明确要求,并给出了主体程序。考生应根据游标的具体使用要求,填写空白处代码。
存储过程中游标的使用分为四个步骤:定义游标、打开游标、取数据、关闭游标。空白(a)处于存储过程的Declare部分,此部分用于定义临时变量,所以此处应该是游标定义,应该填cursor关键字;空白(b)处应该填open,即打开游标;游标打开后,常见的数据处理方法是采用循环方式,利用fetch语句取出一条数据进行处理,所以空白(c)处应该填写存储数据的临时变量,即Pno,Pprice,Mno,分别来存储取出的产品编码、产品价格和供应商编码,此处需要注意的是临时变量的顺序,需要和游标定义中select后的属性顺序保持一致。
空白(d)是该存储过程的最后一条语句,应该对修改后的数据进行确认提交,应该填写commit语句。
转载请注明原文地址:https://kaotiyun.com/show/FL0D777K
0

相关试题推荐
最新回复(0)