存储过程-树形结构数据删除

在项目中常常会遇到树形结构存储的数据,为了方便用户使用就会要求删除树的父节点同时子节点也跟着删除,这里根据网上查找的资料和本身的整理写了个存储过程,代码以下: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  
相关文章
相关标签/搜索