MySQL游标

心已入冬 提交于 2021-02-17 01:57:13

游标 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$
 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!