您好我有以下商店程序:
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.
我现在的问题是库存水平会降低,但在退货时不会增加。
答案 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并且你增加股票。