22,210
社区成员
发帖
与我相关
我的任务
分享
CREATE PROC PROC_TEST
@p1 NVARCHAR(50),
@p2 NVARCHAR(50)
AS
BEGIN
-- 当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。
-- 为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。
-- 编译错误(如语法错误)不受 SET XACT_ABORT 的影响。
SET XACT_ABORT ON;
BEGIN TRAN
BEGIN TRY
INSERT INTO t1 VALUES (@p1,@p2);
INSERT INTO t2 VALUES (@p1,@p2);
INSERT INTO t3 VALUES (@p1,@p2);
INSERT INTO t4 VALUES (@p1,@p2);
INSERT INTO t5 VALUES (@p1,@p2);
INSERT INTO t6 VALUES (@p1,@p2);
COMMIT TRAN;
END TRY
BEGIN CATCH
ROLLBACK TRAN;
/*
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
*/
END CATCH
END