MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4200|回复: 2
打印 上一主题 下一主题

mysql 游标总是多循环一次

[复制链接]
跳转到指定楼层
1#
发表于 2009-5-14 10:58:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近刚学习mysql 游标的使用,但是结果集总是会多一条数据:
CREATE PROCEDURE p10 (OUT return_val INT)
BEGIN
DECLARE a,b,c INT default 0;
DECLARE cur_1 CURSOR FOR SELECT id FROM t;
DECLARE CONTINUE HANDLER FOR NOT FOUND
set b=1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO a;
set c=c+1;
UNTIL b = 1
END REPEAT;
CLOSE cur_1;
SET return_val = c;
END; //

SELECT id FROM t;  t 表中只有5条记录  但是 试了很多办法   结果都是6条
call p10(@x)//
select @x//
结果一直是6   应该只循环5次

同样  试过插入别的表 也插入了6次   

t 表的数据:
mysql> select * from t;
+------+
| id   |
+------+
|    0 |
|    1 |
|    2 |
|    3 |
|    4 |
+------+
5 rows in set (0.13 sec)
请知道的朋友解答 谢谢了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2009-6-9 00:04:56 | 只看该作者
if not b then
     set c=c+1;
    end if;
3#
发表于 2009-11-27 16:45:23 | 只看该作者
DECLARE CONTINUE HANDLER FOR NOT FOUND set b=1;
的意思是当句柄没有找到数据时将b设置为1,所以在循环的时候,都是要多循环一次的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-9-20 00:04 , Processed in 0.062446 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表