我对这个部分有一个很大的t-sql存储过程,我很担心:
insert into @list
(
params
...
)
select params
,..
,oip.someAttr
from @list2 as O
join dbo.abc oip
on oip.id = O.id
AND oip.prgId <> 4
join .. someother tables
...
where oipr.attrA = 1232
现在我想编写一个想要在存储过程中添加其他参数的逻辑 “@value bit”如果设置则只检查“AND条件”,否则不应该检查。
所以,如果我喜欢
join dbo.abc oip
on oip.id = O.id
[AND]??? (i donot know).
提前致谢:)
答案 0 :(得分:5)
这应该这样做:
AND (oip.prgId <> 4 OR @value = 0)
答案 1 :(得分:0)
假设oip.prgId
不能保留0
,这是考虑/尝试的另一种选择:
AND oip.prgId <> 4 * @value
如果@value
为1,则不等式的右侧部分将计算为4
,因此相应的行将被过滤掉。但是,如果@value
为0
,则表达式将等同于oip.prgId <> 0
,这实际上意味着 oip.prgId
的任何值(因为我们'我们假设列中不能有0
个值。