zoukankan      html  css  js  c++  java
  • cs_BannedAddress_CreateUpdateDelete

    ALTER  Procedure [dbo].[cs_BannedAddress_CreateUpdateDelete]
          
    @SettingsID        INT
        , 
    @NetworkAddress    NVARCHAR(50
        , 
    @BannedDate        DATETIME
        , 
    @ActionType        INT --活动类型
    AS
        
    DECLARE @ID INT
        
    DECLARE @ERROR INT
        
    DECLARE @ROWCOUNT INT
        
        
    -- CREATE
            --判断不同的活动类型
        IF @ActionType = 0 
        
    BEGIN
            
    IF EXISTSSELECT * FROM cs_BannedAddresses where SettingsID = @SettingsID and NetworkAddress = @NetworkAddress )
                         
    /*当活动类型为0的情况下,如果存在此地址于封闭表中,则执行活动类型为1的存储过程*/
                
    exec cs_BannedAddress_CreateUpdateDelete @SettingsID@NetworkAddress@BannedDate1 
            
    else
            
    BEGIN --如果不存在于表中,插入此数据记录
            
                
    INSERT INTO cs_BannedAddresses VALUES@SettingsID@NetworkAddress@BannedDate )

                
    SELECT @ERROR = @@ERROR@ID = @@IDENTITY@ROWCOUNT = @@ROWCOUNT
                
    IF@ERROR <> 0 ) --如果错误则创建错误信息
                BEGIN
                    
    RAISERROR'An error occurred while trying to create a new cs_BannedAddress record.'161 )
                    
    RETURN @ERROR
                
    END
                
    ELSE
                
    BEGIN --成功返回0
                    RETURN 0
                
    END
            
    END
        
    END
        
    ELSE IF@ActionType = 1 )
        
    BEGIN
            
    -- UPDATE
            IF NOT EXISTSSELECT * FROM cs_BannedAddresses WHERE SettingsID = @SettingsID and NetworkAddress = @NetworkAddress )
                          
    /*如果活动类型为1,但是表中不存在此记录则返回执行插入数据的上一段存储过程进行添加数据,然后再返回这里
                              此时就存在此纪录,转到ELSE块.更新
    */

                
    exec cs_BannedAddress_CreateUpdateDelete @SettingsID@NetworkAddress@BannedDate0 
            
    ELSE
            
    BEGIN
                
    UPDATE cs_BannedAddresses SET
                    SettingsID 
    = @SettingsID,
                    NetworkAddress 
    = @NetworkAddress,
                    BannedDate 
    = @BannedDate
                
    WHERE
                        SettingsID 
    = @SettingsID 
                    
    AND NetworkAddress = @NetworkAddress
                       
    /*更新数据*/        
                
    SELECT @ERROR = @@ERROR@ID = @@IDENTITY@ROWCOUNT = @@ROWCOUNT
                
    IF@ERROR <> 0 )
                
    BEGIN --有错误则创建错误信息
                    RAISERROR('Could not update the cs_BannedAddress record for SettingsID %d and NetworkAddress of %d'161@SettingsID@NetworkAddress )
                    
    RETURN @ERROR
                
    END
                
    ELSE
                
    BEGIN --成功返回0
                    RETURN 0                
                
    END
            
    END
        
    END
        
    ELSE IF@ActionType = 2 )
        
    BEGIN
            
    -- DELETE
                    /*如果活动类型为2(因为上面的活动类型在0和1之间,
                      所以可以判断在2的情况下记录肯定存在且被更新)
    */

            
    DELETE cs_BannedAddresses
            
    WHERE SettingsID = @SettingsID
                
    AND NetworkAddress = @NetworkAddress
                
            
    SELECT @ERROR = @@ERROR@ID = @@IDENTITY@ROWCOUNT = @@ROWCOUNT
            
    IF@ROWCOUNT = 1 ) --如果操作成功返回0
                RETURN 0
            
    ELSE
                
    RETURN 1
            
        
    END
        
    ELSE
        
    BEGIN --如果活动类型不在0和2之间,则创建错误消息
            RAISERROR'The ActionType value should be between 0 and 2. The value of %d was not within this range'161@ActionType )
            
    RETURN 1
        
    END

    GO
  • 相关阅读:
    HTML初步学习7
    HTML初步学习6
    HTML初步学习5
    HTML初步学习4
    poj3449Geometric Shapes
    poj2074Line of Sight(直线相交)
    2014 Multi-University Training Contest 4
    poj3347Kadj Squares
    poj1556The Doors
    poj3608Bridge Across Islands(凸包间最小距离)
  • 原文地址:https://www.cnblogs.com/ruanbl/p/494148.html
Copyright © 2011-2022 走看看