首页 > 技术文章 > Mysql:存储过程游标不进循环的原因详解

DawnCHENXI 2018-07-23 08:27 原文

 

 

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

 

 

 

本篇博客给刚接触存储过程的朋友做个引导作用,目的是解决游标不走循环

很多人发现他的游标,无论是嵌套循环还是单层的循环,都不会走,或者只走一次,但是从数据上看它并不应该走一次,我把结论给大家说一下

 

很多人都有这俩行中的一行

 

   DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

 

它的作用是什么呢?

就是在下面的执行过程中,一旦有空记录(就是没有返回结果),或者一旦有异常,就会把done设置为1,你循环的时候,判断的done。所以就会出现循环不走的问题

 

解决方案:

  1.异常的话需要自己排掉

  2.如果是嵌套循环,需要在内层循环结束后加上一个    set done=0;

  3.如果你在循环内或者循环前还查了东西,而它没有记录返回,它也会把done改为1,所以,如果你不能删掉那条查询语句的话,就得在后面 set done=0;

大致意思就是这样,可以去尝试一下!!!!!

 

推荐阅读