У меня есть хранимая процедура, над которой я работаю, это очень просто, но дает мне некоторые нечетные проблемы. В принципе, если клиент делает вывод на сберегательный счет более чем в 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, это не так. Любые советы были бы замечательными.