2013-09-05 48 views
-3

使用SQL Server 2008 R2:實現如果MS SQL else語句存儲過程

begin 

    insert tablename1(param1, param2)values(@param1,@param2) 

    if(@param1=="2222" && @param2<5) 

    set @param2 = @param2 + 1 

    update tablename2 set [email protected] where [email protected] 

end 

end 

如何實現這樣的SQL過程。

+0

問題是什麼,什麼問題? –

+0

@Panagiotis:user1663380似乎無法找到T-SQL'IF'的正確語法。 – Heinzi

+2

用光標在'IF'關鍵字上按F1可以解決這個問題。或者只是閱讀文檔。或者使用谷歌搜索的文檔 –

回答

2

T-SQL有一個if-else statement。對於條件語句,使用與WHERE子句相同的語法,例如AND而不是&&,=而不是==以及單引號字符串。 IF需要一個單一的陳述;如果要執行一段代碼,請將其包裝在BEGIN ... END中。

在你的情況下,代碼看起來是這樣的:

IF @param1 = '2222' AND @param2 < 5 
BEGIN 
    ... 
END 

PS:當SQL Server語法元素進行搜索,在關鍵字中包含t-sql。例如,Google搜索t-sql if會將SQL Server IF-ELSE-Syntax的描述作爲第一個匹配項。

0

假設@param1是一個字符串和@param2一些,試試這個:基於在tablename1

CREATE PROCEDURE [dbo].[procedure_name] 
@param1  varchar(50), 
@param2  int 
AS 

begin 
    insert into tablename1(param1, param2) values(@param1,@param2) 

    if @param1='2222' and @param2 < 5 
    begin 
     set @param2 = @param2 + 1 
     update tablename2 set [email protected] where [email protected] 
    end 
end 
1

我相信你問的問題是,如何更新tablename2

UPDATE t2 
SET t2.param2= t1.param2 + 1 
FROM tablename1 t1 
JOIN tablename2 t2 ON t1.param1 = t2.param1 
WHERE (t1.param1 = '2222' AND t1.param2 < 5) 

該查詢更新tablename2當存在tablename1記錄與param1='2222'param2<5

我設置了一些測試數據和前後查詢使用SQLFiddlehttp://sqlfiddle.com/#!3/a29866/2)。