SQL 2000递归查询

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 04:42 点击:

 

网上的做法都是不能以NUL为关键字进行递归查询,现修改如下,可以任意进行递归,记录备忘

 

--查询指定节点及其所有子节点的函数

alter FUNCTION GetLevel(@ID nvarchar(36))

RETURNS @t_Level TABLE(ID nvarchar(36),Level int)

AS

BEGIN

 DECLARE @Level int

 SET @Level=1

 INSERT @t_Level SELECT @ID,@Level

 

 if (@ID is null)

 begin

  SET @Level=@Level+1

  INSERT @t_Level SELECT a.ID,@Level  FROM Area a,@t_Level b  WHERE a.XPath is null AND b.Level=@Level-1

 end

 WHILE @@ROWCOUNT>0

 BEGIN

  SET @Level=@Level+1

  INSERT @t_Level SELECT a.ID,@Level  FROM Area a,@t_Level b  WHERE a.XPath=b.ID AND b.Level=@Level-1

 END

 RETURN

END

GO

 

 

 

调用方法

 

 

 

SELECT a.*

FROM Area a,GetLevel(null) b

WHERE a.ID=b.ID  ORDER BY A.ID

 

作者 ascii

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • sql server 列转行
      • SQL小技巧系列 --- 行转列合并
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1