2

私は心配しているこの部分で大きな 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 ビット」に追加のパラメーターが必要なロジックを記述したいと思います。それが設定されている場合は、「上記の AND 条件」のみをチェックする必要があります。それ以外の場合はチェックしません。

だから私が好きなら

join dbo.abc oip
on oip.id = O.id
[AND]??? (i donot know).

前もって感謝します :)

4

2 に答える 2

5

これはそれを行う必要があります: AND (oip.prgId <> 4 OR @value = 0)

于 2012-07-03T16:25:22.113 に答える
0

oip.prgIds を保持できない可能性があると仮定して0、検討/試行する別のオプションを次に示します。

AND oip.prgId <> 4 * @value

が 1 の場合@value、不等式の右部分は と評価される4ため、対応する行は除外されます。@valueただし、がの場合0、式は と同等になり、基本的に の任意の値をoip.prgId <> 0意味します(列に値が存在できないと想定しているため)。oip.prgId0

于 2012-07-03T18:57:22.397 に答える