请创建一个存储过程priceIncrementByCat,根据指定的类别名称(长度20的字符型)、以及价格浮动比例(Double型),对该类别中所有的商品进行价格调整(要求在存储过程中,只能使用一条UPDATE语句,不能使用其他对product和category表进行操作的SQL语句)。如果成功进行了相关修改,使用ROW_COUNT()
函数打印出经价格修改的商品数目;否则,打印出错误信息。可参考如下所示方式打印出执行结果: +---------------------------------------------------------------+ | Result |
+--------------------------------------------------------------+ | 类别:\食品\中,有3件商品价格已被更新! |
+--------------------------------------------------------------+ 或者:
+--------------------------------------------------------+ | Result |
+-------------------------------------------------------+ | 类别名称不存在、或者该类别中无商品! |
+-------------------------------------------------------+
注意:在考生文件夹中的sj22.txt文件已给出部分程序,但程序不完整,请删除下划线,并在下划线处填上适当的内容,使程序补充完整,并按原文件名保存在考生文件夹下,否则没有成绩,最后运行测试。
1)【参考答案】 DELIMITER $$
CREATE TRIGGER custLevel BEFORE INSERT ON customer FOR EACH ROW BEGIN
DECLARE creditlim INT; SET creditlim=new.creditlimit; IF creditlim> 50000 THEN SET NEW.customerLevel = '1st Level ';
ELSEIF(creditlim<= 50000 &&creditlim>= 10000) THEN SET NEW.customerLevel = '2nd Level '; ELSEIF creditlim< 10000 THEN
SET NEW.customerLevel = '3rd Level'; END IF ; END $$
2)【参考答案】 DELIMITER $$
CREATE PROCEDURE priceIncrementByCat(IN p_catname CHAR(20), IN p_increment DECIMAL(10,2)) BEGIN
UPDATE product p,category c SET p.price=p.price*(1+p_increment) WHERE p.cid=c.cid AND c.cname=p_catname; IF(ROW_COUNT()=0) THEN
SELECT '类别名称不存在、或者该类别中无商品!' AS Result; ELSE
SELECT ('类别:\中,有', ROW_COUNT(),'件商品价格已被更新!') AS Result; END IF; END $$
DELIMITER ;
mysqltest数据库中有学生表(student)、系别表(dept):
student:{sid,sname,score,deptno}(字段说明:学号,姓名,成绩,系别编号) dept:{deptno,deptname }(字段说明:系别编号,系名称)编写一个sj3.php页面,如下图所示: