今天作一個權限菜單。要獲取樹形結構下面的全部節點。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