我有一个包含多个更新和插入查询的SP。如果任何查询给出错误,执行是否转移到下一个语句?例如,在SQL Server中,如果第一条语句抛出错误,执行是否会移至下一条语句?
CREATE PROCEDURE Test()
AS
BEGIN
INSERT INTO SomeTable VALUES (1, 2, 3)
UPDATE SomeTable SET X = 4 WHERE Y = 5
END
在上面的例子中,如果INSERT语句抛出错误,会执行移动到下一个UPDATE语句吗?
有时。看看XACT_ABORT。 – 2012-04-06 21:54:28
“这取决于”。错误可以执行以下任何连接终止,范围堕胎。声明终止和批次堕胎。并不总是很直观地预测特定错误的类别。请参见[SQL 2000中的错误处理 - 背景](http://www.sommarskog.se/error-handling-I.html) – 2012-04-06 21:55:37
@ ta.speot.is我认为XACT_ABORT OFF | ON只适用于批次。 – 2012-04-06 22:02:41