您的位置:首页 > 数据库 > MySQL

mysql 游标循环失效问题

2016-01-18 09:35 627 查看
我们在写存储过程的时候,通常会用到游标,游标的格式为:

  DECLARE  i_done tinyint(1) default 0;//定义是否继续循环的标志

 DECLARE  cur_execution cursor for 

                                  select  i_test1,i_test2    from t ;

 DECLARE CONTINUE HANDLER FOR NOT FOUND SET i_done=1;  //定义没有找到游标了就标志位就设置为1,要结束循环

 open cur_execution ;//打开游标

 exe_loop:LOOP//exe_loop为自定义的名字

  fetch cur_execution into v_test1,v_test2;

  if i_done =1 then

    leave  exe_loop;//如果标志位为1了就结束循环

 end if;

    select * from tableName;

        ................

    //这里是你要处理的过程,可以写很多的语句,包括select语句等

end loop;

close cur_execution ;//关闭游标

在处理过程中,我发现如果在处理过程的过程当中,如果有一个select语句没有查询出数据,就会结束循环,这不是我们想要的,我们想要的即时是在其中的一个select 语句中没有查询的数据,也要继续循环,知道游标定义的数据全部循环完。

为了避免这种情况出现,我们需要在每个select 语句后重置循环标志位为0,让他继续循环下去;

  select * from tableName;

   set i_done = 0;//这里很关键
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: