zoukankan      html  css  js  c++  java
  • SQL中获取树形结构所有子级数据

    今天做一个权限菜单。要获取树形结构下面的所有节点。

    想到的思路有2种。

    1.c#获取所有树的数据,然后递归处理

    2.SQL里面就处理完

    最终还是考虑用SQL写存储过程处理。(数据量大Proc性能好)

    具体代码如下:

    /*
    获取树形结构的所有子节点,包括自己本身
    */
    ALTER proc [dbo].[SP_GetChirldsByParentId]
    @IdValue nvarchar(20),
    @TableName nvarchar(20),
    @IdFiledName nvarchar(20),
    @ParentFieldName nvarchar(20)
    as
    declare @sql nvarchar(800)
    set @sql = 'with cte as
    (
    select '+@TableName+'.* from '+@TableName+' where '+@IdFiledName+' = @Id
    union all
    select a.* from '+@TableName+' a join cte b on a.'+@ParentFieldName+' = b.'+@IdFiledName+'
    )
    select * from cte'
    print @sql
    go
    EXEC SP_EXECUTESQL @Sql, N'@Id NVARCHAR',@Id=@IdValue
    

      

  • 相关阅读:
    基本排序算法分析
    Linux内核浅谈
    Linux内核浅谈
    Linux内核浅谈
    淘宝架构技术的演变
    淘宝架构技术的演变
    淘宝架构技术的演变
    中间件小结
    中间件小结
    中间件小结
  • 原文地址:https://www.cnblogs.com/hujunmin/p/4844319.html
Copyright © 2011-2022 走看看