CREATE DEFINER=`root`@`localhost` PROCEDURE `dj_update`( IN c_name CHAR ( 8 ), IN b_name CHAR ( 20 )) BEGIN DECLARE bh CHAR ( 20 ); DECLARE sfz CHAR ( 18 ); DECLARE sl TINYINT; SELECT 身份证号 INTO sfz FROM members WHERE 会员姓名 = c_name; SELECT 图书编号 INTO bh FROM Book WHERE 书名 = b_name; SELECT 订购册数 INTO sl FROM sell WHERE 身份证号 = sfz AND 图书编号 = bh; IF sl >= 5 AND sl <= 10 THEN UPDATE sell SET 订购单价 =订购单价* 0.9 WHERE 身份证号 = sfz AND 图书编号 = bh; ELSE IF sl > 10 THEN UPDATE Sell SET 订购单价 =订购单价* 0.8 WHERE 身份证号 = sfz AND 图书编号 = bh; END IF; END IF; END
时间: 2024-02-14 15:33:35 浏览: 137
MySQL 5.7 create VIEW or FUNCTION or PROCEDURE
这段代码是一个 MySQL 存储过程,名为 `dj_update`,它包含以下内容:
1. 声明了三个变量 `bh`、`sfz` 和 `sl`,它们的数据类型分别为 `CHAR(20)`、`CHAR(18)` 和 `TINYINT`。
2. 通过 `SELECT` 语句获取了会员姓名为 `c_name` 的会员的身份证号,并将结果存储在变量 `sfz` 中。
3. 通过 `SELECT` 语句获取了书名为 `b_name` 的图书的图书编号,并将结果存储在变量 `bh` 中。
4. 通过 `SELECT` 语句获取了会员身份证号为 `sfz`、图书编号为 `bh` 的销售记录的订购册数,并将结果存储在变量 `sl` 中。
5. 根据订购册数的不同,使用不同的折扣计算方式更新销售记录中的订购单价。如果订购册数在 5-10 之间,则打 9 折;如果订购册数大于 10,则打 8 折。
如果您有任何问题或需要进一步解释,请随时提出。
阅读全文