SQLServer 异常捕获,回滚,再抛出

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

SQLServer 异常捕获,回滚,再抛出 2014-09-09 15:03 by 一人游走, ... 阅读, ... 评论, 收藏, 编辑 一个存储过程中多个更新操作,后面的更新操作出现异常,如果不手动回滚前面修改的数据是不会自动撤销的!

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;

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航