1

私はスクリプトのテストを行っていますが、この Try Catch でテストしている Update 句が次のようになっていることを確認したいと思います。

BEGIN TRY
   BEGIN TRAN
   UPDATE NAME
    SET NAME.ADDBY = 
    (CASE WHEN NAME.ADDBY = 'CONVERSION' THEN 'CONVERTED'  
    WHEN NAME.ADDBY = 'CJDOG'THEN 'CJDAREME' 
    WHEN NAME.ADDBY = 'npalerm' THEN 'REALLYLONGDETAILEDTEXT'
  ELSE NAME
   END)
   COMMIT TRAN 
END TRY
BEGIN CATCH
   IF @@TRANCOUNT >0
   PRINT ERROR_MESSAGE()
        ROLLBACK TRAN 

END CATCH
PRINT @@TRANCOUNT

失敗すると、他の行が更新され、エラーが発生しなかった行だけが通過します。
現在、TRY CATCH にあるため、何も通過しないことを確認する ROLLBACK があります。

しかし、UPDATE 部分だけを実行しようとすると、エラーを引き起こさない部分を更新する代わりに、エラーによってスクリプト全体が終了します。この場合、npalerm は長すぎます。

何か案は?

説明が長いことはわかっていますが、更新を含めることもできましたが、詳細な目的のためにキャッチに含めました。

4

1 に答える 1