SQL中獲取樹形結構全部子級數據

今天作一個權限菜單。要獲取樹形結構下面的全部節點。sql

想到的思路有2種。c#

1.c#獲取全部樹的數據,而後遞歸處理性能

2.SQL裏面就處理完blog

 

最終仍是考慮用SQL寫存儲過程處理。(數據量大Proc性能好)遞歸

具體代碼以下:it

/*
獲取樹形結構的全部子節點,包括本身自己
*/
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
相關文章
相關標籤/搜索