16.12 MySQL中游标的使用案例
了解了游标在MySQL数据库中的基本使用方法后,本节简单介绍如何在MySQL数据库的存储过程和函数中使用游标。
16.12.1 在存储过程中使用游标
1.创建带有游标的存储过程
创建一个名称为StatisticsPrice的存储过程,该存储过程接收一个DECIMAL(10,2)类型的输出参数totalprice,使用游标对t_goods表中查询出的价格数据进行循环处理,累加商品价格信息到totalprice变量。判断循环结束的条件是捕获NOT FOUND状态,当游标找不到下一条记录时,程序会关闭游标并退出存储过程。
创建存储过程,在MySQL命令行中执行代码。
mysql> DELIMITER $$
mysql> CREATE PROCEDURE StatisticsPrice(OUT totalprice DECIMAL(10,2))
-> BEGIN
-> DECLARE price DECIMAL(10,2) DEFAULT 0.00;
-> DECLARE cursor_price CURSOR FOR SELECT t_price FROM t_goods
-> DECLARE EXIT HANDLER FOR NOT FOUND CLOSE cursor_price;
-> SET totalprice = 0.00;
-> OPEN cursor_price;
-> REPEAT
-> FETCH cursor_price INTO price;
-> SET to