我有一条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