mysql存储过程游标触发停止的一个坑

mysql存储过程里,遍历游标可以通过这样的语句判断是否遍历完毕:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
如果在遍历游标的循环里,有查询语句,碰巧查询结果是null,那么也会触发这个not found的条件,从而导致遍历提前退出。
为了避开这个问题,要么不要在遍历里查询,要么先select count(*),不管有没有查询到数据,count都会返回一个结果,然后判断count值来决定是否执行遍历里的查询语句,这样就不会触发遍历结束的条件了

发表评论