mysql 进阶(三)游标的使用
游标的声明
DECLARE cursor_name CURSOR FOR select_statement;
打开游标
open cursor_name;
从游标中取回数据
FETCH cursor_name INTO var_name [, var_name] ...
select_statement 结果集的字段数(列数)必须要和 “INTO” 后面的变量一致,否则会报错。
关闭游标
close cursor_name;
游标溢出
循环游标时,游标本身是不会监控是否到最后一条数据了,当游标已经指向最后一行时继续执行就会造成游标溢出。
游标溢出时会引发 MySQL 预定义的 “NOT FOUND”(也叫 “SQLSTATE '02000' ”)错误。
DECLARE done INT DEFAULT true; -- 定义变量
DECLARE cursor_name CURSOR FOR select_statement; -- 定义游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = false; -- 溢出处理
WHILE done DO
FETCH cursor_name INTO var_name [, var_name] ...
END WHILE;
示例
例一、