一个StoredProcedure中的多个更新语句

时间:2009-04-20 09:36:26

标签: sql stored-procedures

我想知道在商店程序中是否可以有多个Update语句

这样的事情:

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

现在我正在单独执行它们,但由于它们只是一起使用,我想知道它们是否只能位于一个SP中。

3 个答案:

答案 0 :(得分:24)

是的,有可能:

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

答案 1 :(得分:9)

是的,这很好。

在更新之前还将它放在存储过程中:

set nocount on

这使得存储过程不会为没有结果的查询创建结果集。否则,每次更新都会生成一个空的结果集,并将其发送回客户端。

答案 2 :(得分:6)

您应该将这些语句包装在事务中,这样如果一个语句失败,则会回滚所有语句。