递归取根节点,大家看下是这样吗

[ 1519 查看 / 4 回复 ]

create function GetPath
(
        @id uniqueidentifier
)
returns nvarchar(500)
as
begin
        declare @str nvarchar(500)
        declare @pid uniqueidentifier
        select @str=category,@pid=pid from category where id=@id
        if @pid is not null
        begin
                set @str=dbo.GetPath(@pid)+','+@str
        end
        return @str
end
go
select dbo.GetPath(id) as namePath from category

drop function dbo.GetPath

表结构

 附件: 您所在的用户组无法下载或查看附件
1

评分次数

    TOP


     附件: 您所在的用户组无法下载或查看附件

    这是结果
    TOP


     附件: 您所在的用户组无法下载或查看附件

    这是测试的数据
    TOP

    很好!继续保持!
    TOP

    说下自己的体会,做东西的时候还是自己动手实践下,找些实际应用的例子。
    结合这个递归的例子,自己以后做递归的东西的时候可以使用这个解决方法,不用在表中在实际存储他们的路径。
    这样做的话是不是会产生效率上的弊端,从网上找到的例子,大家都说递归的效率不是很高。咱们在实际项目中
    效率也是一个很大的问题
    TOP