标题:游标循环多最后一行
只看楼主
Muyoo
Rank: 2
来 自:北京交通大学
等 级:论坛游民
帖 子:20
专家分:26
注 册:2010-3-28
结帖率:100%
 问题点数:0 回复次数:1 
游标循环多最后一行
这个过程中,游标是将从表 w 中选出的结果集插入到表 t1 中。
但在调用这个存储过程后,插入t1中的记录总是多最后一行。自己感觉是游标的循环有问题,但不清楚到底错在哪。望哪位高手指点~~~谢!!

delimiter //
CREATE PROCEDURE p25 (IN r VARCHAR(10))
BEGIN DECLARE b INT(1);
DECLARE c varchar(10);
DECLARE d varchar(10);
DECLARE p VARCHAR(10) DEFAULT "result";
DECLARE cur_1 CURSOR FOR SELECT type_w,result FROM w WHERE result = r; //从表w中选出type_w,result两列的结果,存入游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;
SET b=0;
OPEN cur_1;//打开游标
REPEAT
FETCH cur_1 INTO d,c;
INSERT INTO t1(type_w,result) VALUES (d,c); //将游标中的结果集插入表t1中
UNTIL b = 1
END REPEAT;//结束游标循环
CLOSE cur_1;//关闭游标
END//
delimiter ;
搜索更多相关主题的帖子: 游标 
2010-05-24 13:51
yangpeigen123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-9-20
得分:0 
游标最后一次循环是取到空值,你把这次的值也执行Insert into 了当然会多一行
delimiter //
CREATE PROCEDURE p25 (IN r VARCHAR(10))
BEGIN DECLARE b INT(1);
DECLARE c varchar(10);
DECLARE d varchar(10);
DECLARE p VARCHAR(10) DEFAULT "result";
DECLARE cur_1 CURSOR FOR SELECT type_w,result FROM w WHERE result = r; //从表w中选出type_w,result两列的结果,存入游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;
SET b=0;
OPEN cur_1;//打开游标
REPEAT
FETCH cur_1 INTO d,c;
IF b <> 1 THEN
INSERT INTO t1(type_w,result) VALUES (d,c); //将游标中的结果集插入表t1中
END IF
;
UNTIL b = 1
END REPEAT;//结束游标循环
CLOSE cur_1;//关闭游标
END//
delimiter ;
2010-09-21 17:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-307938-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.470486 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved