有这样的存储过程。
CREATE PROCEDURE test
@ID
@inventory bit = 0
@status nvarchar(2) = null
AS
BEGIN
SELECT
ID
INVENTORY = (SELECT SUM(Inventory) FROM Option WHERE /*Inventory if 0 with if 1 without*/)
STATUS
WHERE
--TODO Status if
END
如何在status
null, '', 'preordered'
时创建if语句,例如:null
选择所有状态,如果''
选择空状态,如果某些状态 - 选择一些状态。并且需要为库存创建条件(有/没有)
答案 0 :(得分:2)
如果null选择所有状态,如果''选择空状态,如果某些状态 - 选择一些状态
只需添加一个空状态检查,并且在这种情况下不包含任何其他条件:
WHERE (@status IS NULL) /* ALL */
OR
(@status = STATUS) /* match status */
如果您为库存添加条件,请确保将状态检查括在括号中。 AND在OR之前得到评估,因此最好对条件进行逻辑分组,以便它们不会被无序评估。
答案 1 :(得分:2)
WHERE (@status IS NULL OR (@status =STATUS))
如果@Status为空,则不排除任何记录