| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2016 人关注过本帖
标题:游标循环多最后一行
只看楼主 加入收藏
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
快速回复:游标循环多最后一行
数据加载中...
 
   



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

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