节假日时,由供应商提供商品打折后的新价格、数据存放在临时表中,该临时表的表名为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 LOOP
CLOSE upPrice;
(d);
END;