有像这样的存储过程。
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选择所有状态,如果''选择空状态,如果某些状态-选择某些状态。需要为库存创造条件(有/没有)
发布于 2014-08-21 21:46:41
如果null选择所有状态,如果'‘选择空状态,如果某些状态-选择某些状态
只需添加空状态检查,在这种情况下不包含任何其他条件:
WHERE (@status IS NULL) /* ALL */
OR
(@status = STATUS) /* match status */如果添加了库存条件,请确保将状态检查放在括号中。并且在OR之前得到评估,所以最好在逻辑上对条件进行分组,这样它们就不会被无序地求值。
发布于 2014-08-21 21:50:01
WHERE (@status IS NULL OR (@status =STATUS))如果@Status为null,则不排除记录。
https://stackoverflow.com/questions/25436406
复制相似问题