在sql中的存储过程中使用if语句

时间:2012-12-18 07:12:00

标签: sql-server stored-procedures

我有一个存储过程,它会返回一些记录。现在我想根据条件

更改记录显示的条件
select * from table
WHERE cond1 = c1
AND cond2 = c2

基本上我想要一个像这样的结构

if(Val1= Val2) then  
select * from table
WHERE cond1 = c1
AND cond2 = c2
AND cond3 = c3
else
select * from table
WHERE cond1 = c1
AND cond2 = c2

由于存储过程非常庞大且我无法进行太多更改,因此我只能使用if语句更改where条件。

2 个答案:

答案 0 :(得分:3)

只需在where子句中包含条件:

select * from table
WHERE cond1 = c1
AND cond2 = c2
AND (Val1 <> Val2 OR cond3 = c3)

如果这种结构不断扩大 - 也许你正在使用不同的可能参数进行某种形式的搜索 - 值得阅读Erland Sommarskog的Dynamic Search conditions in T-SQL

答案 1 :(得分:0)

试试这个:

IF Val1 = Val2 
BEGIN

END
ELSE
BEGIN

END