Mysql:存储过程游标不进循环的原因详解

Posted dawnchenxi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql:存储过程游标不进循环的原因详解相关的知识,希望对你有一定的参考价值。

 

 

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

 

 

 

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

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

 

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

 

   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;

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

 

以上是关于Mysql:存储过程游标不进循环的原因详解的主要内容,如果未能解决你的问题,请参考以下文章

mysql存储过程 游标双重循环

Oracle存储过程游标for循环怎么写

mysql 存储过程,游标总是多读一行,泪奔求助

mysql之——存储过程 + 游标 + 事务

Oracle存储过程游标for循环怎么写

Oracle存储过程游标for循环怎么写