--查询指定节点及其所有子节点的函数
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
1695

被折叠的 条评论
为什么被折叠?



