標籤:style blog http color os io ar strong for
一個預存程序中多個更新操作,後面的更新操作出現異常,如果不手動復原前面修改的資料是不會自動撤銷的!
BEGIN TRY BEGIN TRAN-- ..... COMMIT TRANEND TRYBEGIN CATCH ROLLBACK TRAN DECLARE @ErrorMessag NVARCHAR(255) SELECT @ErrorMessag = Error_message() RAISERROR (15600,-1,-1,@ErrorMessag);END CATCH
另參考: http://msdn.microsoft.com/zh-cn/library/ms178592.aspx
BEGIN TRY -- RAISERROR with severity 11-19 will cause execution to -- jump to the CATCH block. RAISERROR (‘Error raised in TRY block.‘, -- Message text. 16, -- Severity. 1 -- State. );END TRYBEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE(); -- Use RAISERROR inside the CATCH block to return error -- information about the original error that caused -- execution to jump to the CATCH block. RAISERROR (@ErrorMessage, -- Message text. @ErrorSeverity, -- Severity. @ErrorState -- State. );END CATCH;
SQLServer 異常捕獲,復原,再拋出