首页 > 开发 > 综合 > 正文

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

2024-07-21 02:49:18
字体:
来源:转载
供稿:网友
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;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表