2013-10-15 8 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

Вы проверяете количество снятых средств, прежде чем увеличивать его. т. е. в третий раз значение для извлеченияКаунта будет равно 2 не 3, пока вы его не обновите. Просто проверьте, если оно больше 1 или увеличивает его сначала

Смежные вопросы