0

私が取り組んでいるストアド プロシージャは非常に単純ですが、いくつかの奇妙な問題が発生しています。基本的に、顧客が普通預金口座で 2 回以上引き出しを行うと、その後の引き出しごとに 1.00 のサービス手数料が請求されます。

問題は、1つずれているようで、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) の if ブロックがあるバージョンも作成しましたが、成功しませんでした。引き出し回数が 3 に達するとトリップする必要がある別のバージョンを作成するたびに、そうではありません。どんなアドバイスも素晴らしいでしょう。

4

1 に答える 1