2013-10-15 53 views
0

我有一个存储过程,我正在处理这个过程非常简单,但给我一些奇怪的问题。基本上,如果客户在储蓄账户中提款超过2次,他们在后续提款时就会收取1.00服务费。即使条件得到满足,IF块仍未被触发

问题是我似乎没有一个,它只收取第4次和后续交易的服务费。

下面是存储的过程代码:

IF @AccountType = 'Savings' AND @Type = 'W' 
    BEGIN 
     SELECT @WithdrawCount = WithdrawalCount 
     FROM Accounts 
     WHERE AccountID = @AccountID 

     IF @WithdrawCount > 2 
     BEGIN 
      SET @ServiceCharge = 1.00 

      UPDATE Accounts SET Balance = Balance - @Amount - @ServiceCharge 
      WHERE Balance > 0 AND AccountID = @AccountID 

      UPDATE Accounts SET WithdrawalCount = WithdrawalCount + 1 
      WHERE Balance > 0 AND AccountID = @AccountID 

      INSERT INTO Transactions(AccountID, EmplNo, Amount, Description, EnteredBy, ServiceCharge, Type) 
      VALUES(@AccountID, @EmplNo, @Amount, @Description, @EnteredBy, @ServiceCharge, @Type) 

      SET @TransID = SCOPE_IDENTITY() 
      PRINT @TransID 
     END 
     ELSE 
     BEGIN 
      SET @ServiceCharge = 0.00 

      UPDATE Accounts SET Balance = Balance - @Amount - @ServiceCharge 
      WHERE Balance > 0 AND AccountID = @AccountID 

      UPDATE Accounts SET WithdrawalCount = WithdrawalCount + 1 
      WHERE Balance > 0 AND AccountID = @AccountID 

      INSERT INTO Transactions(AccountID, EmplNo, Amount, Description, EnteredBy, ServiceCharge, Type) 
      VALUES(@AccountID, @EmplNo, @Amount, @Description, @EnteredBy, @ServiceCharge, @Type) 

      SET @TransID = SCOPE_IDENTITY() 
      PRINT @TransID 
     END 

     SELECT @WithdrawCount = WithdrawalCount 
     FROM Accounts 
     WHERE AccountID = @AccountID 
    END 

我也做在那里我有一个如果块为每个条件(> = 3,= 3,< 3)没有成功,以及版本。每次我制作一个不同的版本时,一旦退出次数达到3次就应该被触发,但它不会。任何建议都会很棒。

回答

2

您正在检查您的提款计数,然后再增加它。即在第3次更新后,withdrawCount的值将为2而不是3。只是检查它是否大于1或先增加它

相关问题