标题: mysql 游标总是多循环一次 [打印本页] 作者: eseking 时间: 2009-5-14 10:58 标题: mysql 游标总是多循环一次 最近刚学习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)
请知道的朋友解答 谢谢了作者: xiaofenl 时间: 2009-6-9 00:04
if not b then
set c=c+1;
end if;作者: love19870803 时间: 2009-11-27 16:45
DECLARE CONTINUE HANDLER FOR NOT FOUND set b=1;
的意思是当句柄没有找到数据时将b设置为1,所以在循环的时候,都是要多循环一次的。