在存储过程中使用@@ error和@@ rowcount

时间:2014-03-30 04:15:19

标签: sql sql-server xml tsql

我的存储过程接受xml数据,可以从此xml数据生成的行数是正确未知的。

在此,我需要在将xml数据保存到表时处理事务。我无法使用@@rowcount检查插入是否成功,因为xml中的所有行都是一次插入的。因此,我唯一的选择是@@error。假设xml包含10行数据,如果一个记录未能插入,@@error会检测到它吗?

由于

1 个答案:

答案 0 :(得分:1)

不知道实际的INSERT,但总的来说答案是肯定的。如果它是单个语句并且它出错,则在回滚后不会插入任何行;否则它取决于你的错误处理代码。

我建议使用TRY .. CATCH来处理错误而不是@@ ERROR函数。

Erland Sommarskog有一篇非常好的文章,关于SQL Server中的错误处理,你应该阅读:

http://www.sommarskog.se/error-handling-I.html#batchabort1

还有一个更新的:

http://sommarskog.se/error_handling_2005.html