CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

帮忙看看这个递归错在哪里?数据只能出来一行

楼主fangsky(成雨)2006-03-12 20:35:12 在 Web 开发 / ASP 提问

表中数据如下。如果以地球为起点,则得到所有记录,如果以中国为起点,则得到北京,浙江,宁波,杭州,如果以浙江为起点,则得到宁波,杭州。但是我写的递归只能得到一个记录。请帮忙检查  
  userid           username         number           parentid  
  1                     地球                 001001            
  2                     中国                 001002           001001  
  3                     美国                 001003           001001  
  4                     北京                 001004           001002  
  5                     浙江                 001005           001002  
  6                     宁波                 001006           001005  
  7                     杭州                 001007           001005  
  代码如下:  
  .........................  
  <%  
  dim   sRec,sSql  
  set   sRec=server.createobject("adodb.recordset")  
  numb="0010001"  
  call   more_list(numb))     '递归过程  
  set   sRec=nothing  
  conn.close  
  set   conn=nothing%>  
  ..........................  
  <%  
  sub   more_list(id)  
  sSql="select   *   from   [User]   where   parentid='"   &   id   &"'"  
  response.Write(ssql)  
  sRec.open   sSql,conn,3,1  
  Do   while   not   sRec.eof    
      response.Write   "<tr>"  
      response.Write   "<td   bgcolor=""#FFFFFF"">"&   sRec("level")   &"</td>"      
      response.Write   "<td   bgcolor=""#FFFFFF"">"&   sRec("number")   &"</td>"      
      response.Write   "<td   bgcolor=""#FFFFFF"">"&   sRec("username")   &"</td>"      
      response.Write   "</tr>"    
      call   more_list(sRec("number"))  
                        sRec.movenext  
  Loop  
          sRec.close  
  end   sub  
  %> 问题点数:20、回复次数:1Top

1 楼dxef(丁学)回复于 2006-03-12 22:03:17 得分 20

--Copyright   by   zjcxc(SQL   Server版大版主邹建)  
   
  --测试数据  
  CREATE   TABLE   tb(ID   char(3),PID   char(3),Name   nvarchar(10))  
  INSERT   tb   SELECT   '001',NULL   ,'山东省'  
  UNION   ALL   SELECT   '002','001','烟台市'  
  UNION   ALL   SELECT   '004','002','招远市'  
  UNION   ALL   SELECT   '003','001','青岛市'  
  UNION   ALL   SELECT   '005',NULL   ,'四会市'  
  UNION   ALL   SELECT   '006','005','清远市'  
  UNION   ALL   SELECT   '007','006','小分市'  
  GO  
   
  --查询指定节点及其所有子节点的函数  
  CREATE   FUNCTION   f_Cid(@ID   char(3))  
  RETURNS   @t_Level   TABLE(ID   char(3),Level   int)  
  AS  
  BEGIN  
  DECLARE   @Level   int  
  SET   @Level=1  
  INSERT   @t_Level   SELECT   @ID,@Level  
  WHILE   @@ROWCOUNT>0  
  BEGIN  
  SET   @Level=@Level+1  
  INSERT   @t_Level   SELECT   a.ID,@Level  
  FROM   tb   a,@t_Level   b  
  WHERE   a.PID=b.ID  
  AND   b.Level=@Level-1  
  END  
  RETURN  
  END  
  GO  
   
  --调用函数查询002及其所有子节点  
  SELECT   a.*  
  FROM   tb   a,f_Cid('002')   b  
  WHERE   a.ID=b.ID  
  /*--结果  
  ID       PID     Name                
  ------   -------   ----------    
  002     001     烟台市  
  004     002     招远市  
  --*/Top

相关问题

  • 数据递归
  • 数据库递归问题
  • 关于递归取数据
  • 递归执行出错
  • access数据库递归查找问题
  • ora-00604:递归SQL层%S出现错误?
  • 递归就错(unhandled exception ...:stack overflow)请教~~
  • 递归建树.怎么结果错误????????????????????
  • C#中, 对数据库的操作,使用递归调用出错(出错信息为OleDbCommand是当前正忙的Open,Fectching。)
  • 递归型的数据怎么写入文件?

关键词

  • 节点
  • 数据
  • srec
  • level
  • union
  • 宁波
  • 起点
  • 杭州
  • tb
  • 浙江

得分解答快速导航

  • 帖主:fangsky
  • dxef

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo