sql server 异常捕获和事务处理
如下是通过一个存储过程实现异常捕获以及事务处理的一段t-sql:
ALTER proc [dbo].[Proc_BMIS_Target_Month_FormatData]
as
BEGIN
SET NOCOUNT ON
--此行设置此操作使用事务
SET XACT_ABORT ON
as
BEGIN
SET NOCOUNT ON
--此行设置此操作使用事务
SET XACT_ABORT ON
--开始事务
BEGIN TRANSACTION
--捕获异常
BEGIN TRY
/*存储过程代码*/
--捕获异常
BEGIN TRY
/*存储过程代码*/
...
--提交事务
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT '处理***存储过程时出现异常',
ERROR_MESSAGE() AS ErrorMessage,
GETDATE() AS NowTime
END TRY
BEGIN CATCH
/*在此将错误信息记录到日志表*/
INSERT INTO .dbo.ErrorLog--SELECT '处理***存储过程时出现异常',
ERROR_MESSAGE() AS ErrorMessage,
GETDATE() AS NowTime
--回滚事务
ROLLBACK TRANSACTION
END CATCHEND
--结合TRAN使用,详细参考:
-- 01. https://blog.csdn.net/hzp666/article/details/79627527
-- 02. https://learn.microsoft.com/zh-cn/sql/t-sql/statements/set-xact-abort-transact-sql?view=sql-server-ver16