我有一條SQL語句,其中有不同的'Where子句'給出不同的參數值傳遞給一個存儲過程。TSQL,動態Where子句
我不想爲每個傳遞的級別編寫5個不同的SQL語句。我想到了一個SQL語句和一個CASE語句。
或者,我可以考慮使用動態SQL,但這有點麻煩。
下面是我的例子(不是工作順序) - 任何建議plse。
這是MS SQL Server 2012的
Declare @Level int = 1;
SELECT *
FROM [HR_MIS_STAGING].[dbo].[XXXXX_Promotions_201510_201610]
where
case @Level when 1 then
appt_no = '01';
case @Level when 2 then
org = '15';
case @Level when 3 then
race = '1';
case @Level when 4 then
Gender= 'M';
case @Level when 5 then
Prov= 'Nat';
END
[This](https://stackoverflow.com/a/10260297/92546)answer演示如何在'on'或'where'子句中使用'case' _expression_。由於參數嗅探,性能可能是預編譯語句的問題。 – HABO