2012-12-18 68 views
0

我有一個存儲過程返回一些記錄。現在我想改變它正在一個條件的基礎上顯示的記錄的條件在sql中的存儲過程中使用if語句

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條件。

+0

好的。那麼你的問題是什麼? – Raj

+0

它的簡單我需要嵌入條件where子句中,如果一個特定的值滿足條件..種動態編輯存儲過程中的where子句 – Gautam

回答

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

+0

+1 - 我不知道厄蘭是誰,但他有一些非常有用的材料。 –

+0

@MrMoose - 我從來沒有在這裏見過Erland。他曾經在usenet團體(例如microsoft.public.sqlserver.programming)上非常活躍,他的工作仍然進行了極好的研究。 –

0

試試這個:

IF Val1 = Val2 
BEGIN 

END 
ELSE 
BEGIN 

END 
+0

它將在where子句中工作嗎?我的意思是我只需要在where子句中添加一個額外的「AND」條件3 – Gautam

+0

如果您只是想根據變量值更改WHERE子句,那麼您將需要使用動態SQL。我的意思是你不能簡單地編碼 - 從表格中選擇* IF var1 = var2 WHERE ... – Raj

相關問題