嵌套在T-SQL中的条件

时间:2014-08-27 10:00:07

标签: sql tsql sql-server-2012

您好我有以下商店程序:

    CREATE PROCEDURE update_stock_level
(
    @ItemID int,
    @Quantity int = 1,
    @Return int = 0
)
AS

    IF @Return = 0
        UPDATE  Stock
        SET     Quantity    = (Quantity - @Quantity)
        WHERE   ItemID      =   @ItemID

    ELSE 
        UPDATE  Stock
        SET     Quantity    = (Quantity + @Quantity)
        WHERE   ItemID      =   @ItemID

此存储过程适用于POS应用程序,此程序(应该)执行的操作是根据项目ID和项目数量更新(增加或减少)库存水平。

ItemID - >从前端选择的项目的ID。 数量 - >多少件物品 返回 - >如果返回是' 0' 0这意味着它是假的,这意味着如果它是' 1'它表示正在退回物品,在这种情况下,库存应该按返回的数量增加。如果没有任何内容传递给qantity参数,则默认值为1.

我现在的问题是库存水平会降低,但在退货时不会增加。

1 个答案:

答案 0 :(得分:3)

只留下ELSE部分:

IF @Return = 0
    UPDATE  Stock
    SET     Quantity    = (Quantity - @Quantity)
    WHERE   ItemID      =   @ItemID
ELSE 
    UPDATE  Stock
    SET     Quantity    = (Quantity + @Quantity)
    WHERE   ItemID      =   @ItemID

或者你可以在一个statemnet中完成它:

UPDATE  Stock
SET     Quantity    = Quantity - @Quantity * POWER(-1,@Return)
WHERE   ItemID      = @ItemID

如果@ Return = 0则power(-1,0)= 1并减少库存。

如果@ Return = 1则power(-1,1)= -1并且你增加股票。