存儲過程-樹形結構數據刪除

在項目中常常會遇到樹形結構存儲的數據,爲了方便用戶使用就會要求刪除樹的父節點同時子節點也跟着刪除,這裏根據網上查找的資料和本身的整理寫了個存儲過程,代碼以下: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  
相關文章
相關標籤/搜索