2009-04-20 93 views
9

我想知道是否有可能有多個更新語句的存儲過程中多個更新語句

事情是這樣的:

Update Table1 set field1 = @new_value where id = @table1_id 

Update Table2 set field2 = @new_value where id = @table2_id 

Update Table3 set field3 = @new_value where id = @table3_id 

現在我執行它們seperately但他們只能一起使用,我想知道它們是否可以位於一個SP中。

+1

這是使用存儲過程,添加事務和錯誤處理的一個原因,你有一個很好的解決方案 – 2009-04-20 13:43:23

回答

22

是的,這是可能的:

CREATE PROCEDURE prc_update (@table1_id INT, @table2_id INT, @table3_id INT, @new_value INT) 
AS 
BEGIN 
     UPDATE Table1 
     SET  field1 = @new_value 
     WHERE id = @table1_id 

     UPDATE Table2 
     SET  field2 = @new_value 
     WHERE id = @table2_id 

     UPDATE Table3 
     SET  field3 = @new_value 
     WHERE id = @table3_id 
END 
+0

哇,這有點尷尬,我當然試過這個,不斷收到語法錯誤,並以某種方式得出它不是可能以這種方式,只是再試一次,完美的作品!謝謝:) – 2009-04-20 09:49:13

8

是的,工作正常。

更新之前也把這個存儲過程:

set nocount on 

這使從查詢產生的結果集沒有結果的存儲過程。否則,每次更新都會生成一個空的結果集,並將其發送回客戶端。

6

您應該將這些陳述包含在交易中,以便在失敗時全部回滾。