Я использую SQL Server 2012 SELECT
внутри хранимой процедуры. SP принимает ряд параметров. Один из этих параметров важен в контексте моего вопроса. Вот псевдокод моего SP:
create proc MyProc
@mid tinyint,
@param1 bit = 0
as
set nocount on
select
p.RowId,
i.Sku,
i.Condition,
p.OldPrice,
p.Delta
from Prices p
join Items i on (p.Sku = i.Sku)
where
(p.Mid = @mid)
and (i.Quantity > 0)
and (i.IsNew = 0)
--The condition below must (not)execute depending on param1
----------------------------------------------------------------------
and not (p.Delta = 0 and p.CurrentPrice = p.pMin)
----------------------------------------------------------------------
and p.ThreadId = @thread_id
order by p.Delta desc
Другими словами, если param1 = 0
запрос выполняет условие WITH, если param1 = 1
то условие игнорируется (как будто его и не было!).
Я пытался играть с булевыми выражениями, но до сих пор не понял.
P.S. Мне не нужен динамический SQL, как в этой статье: Оператор SQL. Я люблю свои предварительно скомпилированные SP.