mysql里面的while里面为什么会重复输出最后一个数据

来源:互联网 发布:win7xiufu引导ubuntu 编辑:程序博客网 时间:2024/06/18 11:07
mysql里面的while运行机制是先执行再判断,当监听语句判断tag=1的时候,while里面的语句会继续执行,但是监听语句里面的tag=1会让fetch语句失效,进而接着执行1select uid语句,所以会输出两次最后一个
eg:
create procedure get_all_info12()begin
declare uid int(5) default 0;declare tag int(1) default 0;declare allinfo cursor for select id from stu_info;declare continue handler for sqlstate '02000' set tag=1;
open allinfo;while tag=0 dofetch allinfo into uid;select uid;end while;close allinfo;
end
输出的数据中,最后两个数据是相同的
只要在while循环体中加判断就可以去除重复输出的情况
eg:
create procedure get_all_info()begindeclare uid int(5) default 0;declare tag int(1) default 0;declare allinfo cursor for select id from stu_info;declare continue handler for sqlstate '02000' set tag=1;open allinfo;while tag=0 dofetch allinfo into uid;if tag=0 thenselect uid;end if;end while;close allinfo;end
                                             
0 0