mysql 游标的使用

之前在使用存储过程,一般是在数据库指定查询数据,然后修改数据。所以,一直都没有使用到游标。一直到某天,在使用存储过程中,我希望使用一个类似java的集合的场景(假如不使用游标,那么会增加很多sql查询!)


DROP PROCEDURE if EXISTS demoPro;

CREATE PROCEDURE demoPro()
BEGIN
	DECLARE done int DEFAULT 0; -- 若为1/true 则结束循环,类似java程序里的boolean变量的标示
	DECLARE a,b VARCHAR(255);   -- 接收 id和name的变量
	DECLARE cur1 CURSOR FOR SELECT id,name from user where id=1;  -- 这里是测试,只查询一条
	DECLARE CONTINUE HANDLER for not FOUND set done=1;	-- 游标的固定写法,较普遍
	-- DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; --游标的固定写法,较少使用

	OPEN cur1;-- 打开游标
		REPEAT-- 循环
			FETCH cur1 INTO a,b; -- 把游标内的数据放到临时变量
			SELECT CONCAT(a,b);  -- 拼接输出(演示效果)
			
		UNTIL done end REPEAT; -- 根据条件,结束循环
	CLOSE cur1; -- 关闭游标 是close不是end,一直end end 写习惯了,掉了一个小坑
end;


好了,执行完毕,就可以查看游标的效果了。

CALL demoPro();


附上mysql 5.1手册,戳我


posted @ 2016-01-30 18:57  Bug开发攻城狮  阅读(145)  评论(0编辑  收藏  举报