0

in updateステートメントなどのストアドプロシージャを作成していますが、そのようなタイプのものを適用する方法を混乱させていますか?

私のストアドプロシージャは次のとおりです。

ALTER PROCEDURE [dbo].[Payment_SP]
    @reciptId varchar(50)=null,
    @balPay float=null,
    @payDone float=null,
    @payDate datetime=null,
    @fullfillId_FK varchar(50)=null,
    @clintId_FK int=null,
    @status varchar(50)=null,
    @operation int,
    @fullfillId varchar(50)=null
AS
BEGIN   
    if @operation = 3
    BEGIN
        UPDATE Recipt 
        SET balPay = @balPay 
        WHERE reciptId = @reciptId

        if @@rowcount = 0
            insert into Recipt(reciptId, balPay, payDone, payDate, fullfillId_FK, clintId_FK)
            values(@reciptId, @balPay, @payDone, @payDate, @fullfillId_FK, @clintId_FK)
        update Item_Full 
        set totCost = (select balPay from Recipt) 
        where fullfillId = @reciptId

        if @balPay='0'
        BEGIN
            update Item_Order 
            set status = 'CLOSE' 
            where status = 'FULLFILL' 
               or status = 'RUNNING' 
              and orderId = @reciptId
        END
        ELSE
        BEGIN
            update Item_Order 
            set status = 'RUNING' 
            where status = 'FULLFILL' 
              and orderId = @reciptId
        END
    END
END

ここでは、たくさんのテーブルと列を使用しています。Reciptしかし、バランス支払い(@balPay = 0)の場合、ステータス= CLOSEの場合、それ以外の場合はバランス> 0の場合、ステータス= RUNINGの場合、テーブルでそれをしたい

しかし、ステータスを取得するたびにRUNING、支払いが完了した後になります。これは、if 部分ではなく、条件文の else 部分のみが実行されることを意味します。

if ステートメントの条件は何ですか

ありがとうございました

4

2 に答える 2

0

わかりました、ばかげたスペルミスがありました。それは、else RUNING のステータスを変更し、条件が RUNNING を探している場合...申し訳ありませんが、ありがとうございます

于 2012-08-23T19:12:48.727 に答える
0

@balPay が null から更新されることはないため、else ステートメントは常に実行されます。

于 2012-08-21T19:39:43.177 に答える