zoukankan      html  css  js  c++  java
  • aspnet_Profile_DeleteProfiles

    ALTER  PROCEDURE dbo.aspnet_Profile_DeleteProfiles
        
    @ApplicationName        NVARCHAR(256),
        
    @UserNames              NVARCHAR(4000)
    AS
    BEGIN
        
    DECLARE @UserName     NVARCHAR(256)
        
    DECLARE @CurrentPos   INT
        
    DECLARE @NextPos      INT
        
    DECLARE @NumDeleted   INT
        
    DECLARE @DeletedUser  INT
        
    DECLARE @TranStarted  BIT
        
    DECLARE @ErrorCode    INT

        
    SET @ErrorCode = 0
        
    SET @CurrentPos = 1
        
    SET @NumDeleted = 0
        
    SET @TranStarted = 0
        
    -----------声明变量并为变量附初值-----------------

        
    IF@@TRANCOUNT = 0 )  
        
    BEGIN
            
    BEGIN TRANSACTION
            
    SET @TranStarted = 1
        
    END
        
    ELSE
            
    SET @TranStarted = 0
       
    ---------------如果当前活动事务为0,开始事务并设置事务参数为1---------------------


        
    WHILE (@CurrentPos <= LEN(@UserNames)) --如果@CurrentPos不大于输入参数的长度
              /*LEN返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。*/
        
    BEGIN
            
    SELECT @NextPos = CHARINDEX(N','@UserNames,  @CurrentPos)
              
    /*CHARINDEX  返回字符串中指定表达式的起始位置
               返回@UserNames中从@CurrentPos开始   N','  的起始位置
    */

            
    IF (@NextPos = 0 OR @NextPos IS NULL)
                
    SELECT @NextPos = LEN(@UserNames+ 1

            
    SELECT @UserName = SUBSTRING(@UserNames@CurrentPos@NextPos - @CurrentPos)
            
    SELECT @CurrentPos = @NextPos+1
              
    /*SUBSTRING 返回字符、binary、text 或 image 表达式的一部分。
                上面即返回@UserNames中开始位置为@CurrentPos,长度为@NextPos - @CurrentPos的部分
    */



    ----------------------上面这部分有点不明白为什么要这样-----------
            IF (LEN(@UserName> 0)
            
    BEGIN
                
    SELECT @DeletedUser = 0 
             
    -----------------调用存储过程aspnet_Users_DeleteUser(最好看下这个存储过程先),输出参数为@DeletedUser----------
                EXEC dbo.aspnet_Users_DeleteUser @ApplicationName@UserName4@DeletedUser OUTPUT
                
    IF@@ERROR <> 0 ) --如果存储过程执行有错误,则跳转到回滚
                BEGIN
                    
    SET @ErrorCode = -1
                    
    GOTO Cleanup
                
    END
                
    IF (@DeletedUser <> 0--如果存储过程的输出参数不为0,即成功了,则@NumDeleted递增1
                    SELECT @NumDeleted = @NumDeleted + 1
            
    END
        
    END
        
    SELECT @NumDeleted ---查询 NumDeleted
        IF (@TranStarted = 1)  ---事务运行到此
        BEGIN
            
    SET @TranStarted = 0
            
    COMMIT TRANSACTION   ---结束事务
        END
        
    SET @TranStarted = 0

        
    RETURN 0

    Cleanup:
        
    IF (@TranStarted = 1 )
        
    BEGIN
            
    SET @TranStarted = 0
            
    ROLLBACK TRANSACTION
        
    END
        
    RETURN @ErrorCode
    END
  • 相关阅读:
    jquery拖拽插件 tableDnD
    爱回收jd图标
    struts2框架学习笔记2:配置详解
    struts2框架学习笔记1:搭建测试
    hibernate框架学习笔记12:查询优化
    hibernate框架学习笔记11:Criteria查询详解
    hibernate框架学习笔记10:HQL查询详解
    hibernate框架学习笔记9:多对多关系案例
    hibernate框架学习笔记8:一对多关系案例
    hibernate框架学习笔记7:HQL查询、Criteria查询简介
  • 原文地址:https://www.cnblogs.com/ruanbl/p/491062.html
Copyright © 2011-2022 走看看