Posted on 2008-06-08 16:33 
G_G 阅读(2783) 
评论(2)  编辑  收藏  所属分类: 
Database 
			 
			
		 
		就用数据
数据库表地址数据(中国地区)来说吧
存储过程:DELIMITER //
drop procedure if exists  useCursor //
create temporary table if not exists  aop.tmp_table(data bigint(20))//
//建立存储过程 
CREATE PROCEDURE useCursor(iid bigint(20))
    BEGIN
          //局部变量定义
         declare tid bigint(20) default -1 ;
         
          //游标定义
         declare cur1 CURSOR FOR select id from aop.location where fid=iid ;
         //游标介绍定义
         declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tid = null;
         
         //开游标
         OPEN cur1;
         FETCH cur1 INTO tid;
         WHILE ( tid is not null ) 
         DO
          insert into aop.tmp_table values(tid);
            //树形结构数据递归收集到建立的临时表中
          call useCursor(tid);
          FETCH cur1 INTO tid ;
       END WHILE;
    END;//
DELIMITER ;
//查询开始 ,运行是成功的,但用时有10多秒之多,才几百条数据;
//望那个大牛 帮帮解决下时间问题!
call useCursor(1);
select * from tmp_table ;
drop temporary table if  exists  aop.tmp_table ;
结果:


|  187 |
|  188 |
|  189 |
|  190 |
|  191 |
|  192 |
|  193 |
|  194 |
|  195 |
|  196 |
|  197 |
|  198 |
|  199 |
|  200 |
|  201 |
|  202 |
|  203 |
|  204 |
|  205 |
|  206 |
|  207 |
|  208 |
|  209 |

 .
.