eseking 发表于 2009-5-14 10:58:24

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:56

if not b then
   set c=c+1;
    end if;

love19870803 发表于 2009-11-27 16:45:23

DECLARE CONTINUE HANDLER FOR NOT FOUND set b=1;
的意思是当句柄没有找到数据时将b设置为1,所以在循环的时候,都是要多循环一次的。
页: [1]
查看完整版本: mysql 游标总是多循环一次