0

在 SQL Server 中,您需要检查每个 SQL 语句的错误。例如,如果我在一笔交易中有 3 次更新,我需要一些代码,例如:

declare @HasError int
begin tran
Update tab1 set ....
Set  @HasError = @@error;
Update tab2 set ...
Set  @HasError = @@error;
Update tab3 set ...
Set  @HasError = @@error;

If @HasError<>0
  rollback tran;
else
 commit tran;

对于这种情况,还有更简单的代码的其他解决方案吗?例如,类似 c# 风格的东西:

   begin tran
    try
    {
      Update tab1 set ....    
      Update tab2 set ...
      Update tab3 set ...
      commit tran;
    }catch(error){
       rollback tran;
    }
4

2 回答 2

3

您可以像在 c# 中一样使用 try catch 语法

 BEGIN TRY
    -- ....
 END TRY
 BEGIN CATCH
    -- ....
 END CATCH
于 2012-07-11T13:30:33.313 回答
0

单击此处查看 => 为什么我真的需要使用 SET XACT_ABORT ON

单击此处查看 SET NOCOUNT ON 如何提高 SQL Server 存储过程性能

Begin Try
    SET NOCOUNT ON
    Set XACT_ABORT ON
    Begin Tran
        --Your Query
    Commit Tran
End Try

Begin Catch
    RollBack Tran
    Select ERROR_MESSAGE() as Msg, ERROR_NUMBER() as Num
End Catch
于 2012-07-11T17:25:37.477 回答