递归表删除 tree


/**
*角色组删除
*/
IF EXISTS ( SELECT  *
            FROM    sys.objects
            WHERE   object_id = OBJECT_ID(N'[dbo].[QX_RoleGroup_Del]')
                    AND type IN ( N'P', N'PC' ) )
    BEGIN
        DROP PROCEDURE QX_RoleGroup_Del
    END
GO 

CREATE PROC QX_RoleGroup_Del
    @nodeid NVARCHAR(50) ,
    @rp INT OUTPUT
AS
    BEGIN
 

        DECLARE @RoleGroup_ID INT
        DECLARE @RoleGroup_PID INT
        SET @rp = 0
        BEGIN TRY
            SET @RoleGroup_ID = @nodeid
            SET @RoleGroup_PID = @nodeid

            WHILE ( EXISTS ( SELECT *
                             FROM   QX_RoleGroup
                             WHERE  RoleGroup_ID = @nodeid ) )
                BEGIN
                    IF ( EXISTS ( SELECT    *
                                  FROM      QX_RoleGroup
                                  WHERE     RoleGroup_PID = @RoleGroup_ID
                                            AND RoleGroup_ID != @RoleGroup_ID ) )
                        BEGIN
                            SET @RoleGroup_PID = @RoleGroup_ID
                            SET @RoleGroup_ID = ( SELECT TOP 1
                                                            RoleGroup_ID
                                                  FROM      QX_RoleGroup
                                                  WHERE     RoleGroup_PID = @RoleGroup_ID
                                                            AND RoleGroup_ID != @RoleGroup_ID
                                                )
                        END
                    ELSE
                        BEGIN
                   --删除工作组关联角色
                            DELETE  FROM dbo.QX_WorkRole_RoleGroup
                            WHERE   RoleGroup_ID = @RoleGroup_ID
                   
                   --删除工作组
                            DELETE  FROM QX_RoleGroup
                            WHERE   RoleGroup_ID = @RoleGroup_ID
                
                            SET @RoleGroup_ID = @RoleGroup_PID
                            SET @RoleGroup_PID = ( SELECT TOP 1
                                                            RoleGroup_PID
                                                   FROM     QX_RoleGroup
                                                   WHERE    RoleGroup_ID = @RoleGroup_PID
                                                 )
                        END
    
 
                END
     
        END TRY
        BEGIN CATCH
            SET @rp = -1
        END CATCH
    END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值