我想知道在商店程序中是否可以有多个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中。
答案 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)
您应该将这些语句包装在事务中,这样如果一个语句失败,则会回滚所有语句。