IF EXISTS ( SELECT TOP ( 1 ) * FROM #Tpmet )
BEGIN
BEGIN TRANSACTION; -- 开启事务
DECLARE @ErrorNo INT; -- 定义变量,用于记录事务执行过程中的错误次数
SET @ErrorNo = 0;
BEGIN TRY
/*
业务逻辑
@@ERROR 是错误信息标记
*/
SET @ErrorNo = @ErrorNo + @@ERROR;
IF ( @ErrorNo > 0 )
BEGIN
--抛出自定义的异常,在最后的catch块中统一处理异常
RAISERROR(233333,16,3);
END;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() errorNumber , --错误代码
ERROR_SEVERITY() errorSeverity , --错误严重级别,级别小于10 try catch 捕获不到
ERROR_STATE() errorState , --错误状态码
ERROR_PROCEDURE() errorProcedure , --出现错误的存储过程或触发器的名称
ERROR_LINE() errorLine , --发生错误的行号
ERROR_MESSAGE() errorMessage; --错误的具体信息
IF ( @@trancount > 0 ) -- @@trancounz 系统全局变量,事务开启 @@trancount 值+1,判断事务是否开启
BEGIN
ROLLBACK TRANSACTION; -- 回滚事务
END;
END CATCH;
IF ( @@trancount > 0 )
BEGIN
COMMIT TRANSACTION; -- 提交事务
END;
END;
网友评论