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
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>