実際、BEGIN TRY... END TRY...BEGIN CATCH... END CATCH
SQL Server には構造があります。私はそれをかなり頻繁に使用します。
ここに概要があります-エラー情報の選択に関するビットはもちろんオプションです-あなたのケースで意味のあることをしてください。
BEGIN TRY
-- do something here.
/* Following line can be used to force termination for testing purposes.
No data changes will be committed.
*/
--RAISERROR('testing', 99, 1);
PRINT 'Successful completion; committing transaction.';
COMMIT TRAN;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
RAISERROR(N'Error occurred; rolling back and terminating.',18,1);
END CATCH;