游标 cursor
类似于迭代器,将查询结果通过迭代器一一取出
基础语法
DECLARE [游标名] CURSOR FOR [查询语句] ;
越界标识
DECLARE flag INT DEFAULT 1;
DECLARE CONTINUE|EXIT|UNDO HANDLER FOR NOT FOUND SET flag := 0;
当游标取值为空时,会触发越界标识,将flag置为0 CONTINUE 后面的语句继续 EXIT 后面的语句结束 UNDO 前面的语句撤销
注意:flag变量声明需要在游标声明语句之前,否则会报错。
使用例子
DELIMITER $;
CREATE PROCEDURE p11()
BEGIN
DECLARE exam_id INT ;
DECLARE exam_name VARCHAR(20);
DECLARE flag INT DEFAULT 1;
DECLARE getRow CURSOR FOR SELECT id, NAME FROM exam ;
DECLARE EXIT HANDLER FOR NOT FOUND SET flag := 0;
OPEN getRow;
REPEAT
FETCH getRow INTO exam_id , exam_name;
SELECT exam_id , exam_name FROM DUAL;
UNTIL flag = 0 END REPEAT;
CLOSE getRow;
END$
来源:oschina
链接:https://my.oschina.net/u/3371784/blog/2236737