mysql中的游标使用案例
2016-11-02 19:58
239 查看
DELIMITER $$ DROP PROCEDURE IF EXISTS `curTest`$$ CREATE PROCEDURE curTest(IN _myId INT) BEGIN DECLARE ids VARCHAR(20); -- 遍历数据结束标志 DECLARE done INT DEFAULT FALSE; -- 定义游标 DECLARE cur CURSOR FOR SELECT GROUP_CONCAT(id) FROM detail WHERE splitFlag=1 AND myId=_myId GROUP BY code; -- 将结束标志绑定到游标 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN cur; updateLoop:LOOP FETCH cur INTO ids; -- 跳出循环 IF done THEN LEAVE updateLoop; END IF; -- 业务开始 UPDATE detail a, (SELECT nos,id FROM detail WHERE FIND_IN_SET(id,ids) ORDER BY LENGTH(nos) DESC LIMIT 0,1) b SET a.nos= b.nos WHERE FIND_IN_SET(a.id,ids); END LOOP; CLOSE cur; END$$ DELIMITER ;
注意:
1.变量的定义不要和你的select的列的键同名!不然,fetch into 会失败!
2.变量定义顺序不对会报错 “
Variable or condition declaration after cursor or handler declaration”
报错参见:http://stackoverflow.com/questions/18780974/mysql-error-1337
参考:http://www.cnblogs.com/trying/p/3296793.html
相关文章推荐
- mysql中游标的使用案例详解(学习笔记)
- mysql中游标的使用案例详解(学习笔记)
- mysql中游标的使用案例详解(学习笔记)
- mysql中游标的使用案例详解
- Mysql游标使用
- oracle中游标的使用案例
- 使用游标实现 mysql 存储过程中的循环
- MySql 存储过程游标使用示例
- Mysql 游标的使用方法用例
- MYSQL存储过程中使用游标的实例
- mysql游标的使用
- mysql 游标的使用
- MYSQL游标的使用
- 关于MySQL游标的嵌套使用
- MySQL中关于行转列的存储过程的写法(使用游标)
- SQL游标如何使用,具体案例
- mySQL 使用游标小例
- mysql 游标的使用
- mysql 游标使用