0

ループ内に複数のトランザクションを持つストアド プロシージャがあります。

WHILE @COUNT < @MY_NUM
BEGIN
  BEGIN TRANSACTION
  -- DO STUFF HERE

  IF(@@ERROR != 0)
  BEGIN
    ROLLBACK TRANSACTION
    BREAK
  END

  COMMIT TRANSACTION
END

ここで、特定の回数の実行後にループに意図的にエラーを導入し、データを確認することで、 ROLLBACK TRANSACTIONandロジックが機能するかどうかをテストしたいと思います。BREAK

さらに、これらのストアド プロシージャをシェル スクリプトから実行します。Ctrl + Cというわけで、途中で使ってテストしたいと思います。これは機能しますか?そうでない場合、どうすれば意図的にエラーを導入できますか?

ありがとう

4

2 に答える 2

2

次のいずれかを実行できます。

  1. 意図的にゼロ除算のようなエラーを発生させる
  2. RaiseError()を使用する
于 2012-09-17T15:52:15.960 に答える
1

使用できますprint

WHILE @COUNT < @MY_NUM
BEGIN
  BEGIN TRANSACTION
  print 'BEGIN TRANSACTION'
  -- DO STUFF HERE
  print '-- DO STUFF HERE'
  IF(@@ERROR != 0)
  BEGIN
    ROLLBACK TRANSACTION
    print 'ROLLBACK TRANSACTION @MY_NUM: %1!',convert(varchar,@MY_NUM)
    BREAK
  END

  COMMIT TRANSACTION
  print 'COMMIT TRANSACTION'
END

ここにドキュメントへのリンクがあります。

于 2012-09-17T20:31:29.907 に答える