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;

示例

例一、

例二、
mysql 嵌套游标实现的一个函数

上一篇 mysql 进阶(二)函数的使用