我的存储过程接受xml
数据,可以从此xml
数据生成的行数是正确未知的。
在此,我需要在将xml
数据保存到表时处理事务。我无法使用@@rowcount
检查插入是否成功,因为xml
中的所有行都是一次插入的。因此,我唯一的选择是@@error
。假设xml
包含10行数据,如果一个记录未能插入,@@error
会检测到它吗?
由于
答案 0 :(得分:1)
不知道实际的INSERT,但总的来说答案是肯定的。如果它是单个语句并且它出错,则在回滚后不会插入任何行;否则它取决于你的错误处理代码。
我建议使用TRY .. CATCH来处理错误而不是@@ ERROR函数。
Erland Sommarskog有一篇非常好的文章,关于SQL Server中的错误处理,你应该阅读:
http://www.sommarskog.se/error-handling-I.html#batchabort1
还有一个更新的: