在項目中常常會遇到樹形結構存儲的數據,爲了方便用戶使用就會要求刪除樹的父節點同時子節點也跟着刪除,這裏根據網上查找的資料和本身的整理寫了個存儲過程,代碼以下:spa
create PROCEDURE [dbo].[proc_EntityList] @EntityId varchar(36) AS BEGIN SET NOCOUNT OFF DECLARE @i INT SET @i = 0 create table #FIDS --建立臨時表#Tmp ( id varchar(36) not null, --建立列ID levelNo varchar(50), ); INSERT INTO #FIDS ( id, levelNo ) VALUES ( @EntityId, -- id - int 1 -- levelNo - int ) WHILE @@ROWCOUNT > 0 BEGIN SET @i = @i + 1 INSERT #FIDS SELECT F.ID , @i + 1 FROM #FIDS R , dbo.EntityList F WHERE F.PID = R.id AND R.levelNo = @i END DELETE FROM dbo.EntityList WHERE ID IN ( SELECT ID FROM #FIDS ) END