0

SQL Server では、SQL ステートメントごとにエラーをチェックする必要があります。たとえば、1 つのトランザクションで 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 に答える