您的位置:首页 > 数据库

子节点深度级联获取所有父节点sql

2012-12-25 10:44 190 查看
子节点深度级联获取所有父节点:

View Code

USE [DBName]
GO
/****** Object:  UserDefinedFunction [dbo].[Fn_GetCategoryParent]   ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create FUNCTION [dbo].[Fn_GetCategoryParent]
(
@Id UNIQUEIDENTIFIER
)
RETURNS @tb TABLE(CateID UNIQUEIDENTIFIER,CateName VARCHAR(50),ParentID UNIQUEIDENTIFIER,DisplayName VARCHAR(50),
Remark VARCHAR(256), [Level] int)
AS
BEGIN
DECLARE @i INT
SET @i = 1
INSERT INTO @tb SELECT CateID,CateName,ParentID,Remark,DisplayName,0 FROM dbo.T_Sys_Category WHERE CateID = @id
INSERT INTO @tb SELECT CateID,CateName,ParentID,Remark,DisplayName,@i FROM dbo.T_Sys_Category
WHERE CateID = (SELECT ParentID FROM dbo.T_Sys_Category WHERE CateID = @Id)
--如果没有新的值插入,循环结束
WHILE @@rowcount<>0
BEGIN
SET @i = @i + 1;
INSERT INTO @tb
SELECT a.CateID,a.CateName,a.ParentID,a.Remark,a.DisplayName,@i
FROM
dbo.T_Sys_Category a, @tb b
WHERE
a.CateID = b.ParentID and b.Level = @i - 1
END
RETURN
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: