MariaDB社区

标题: 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,所以在循环的时候,都是要多循环一次的。




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2