CREATE PROCEDURE [dbo].[USP_TESTEXCEPTION]
@Param1 AS INT,
@Param2 AS INT
AS
BEGIN
SET NOCOUNT ON;
UPDATE TABLE1 SET COLUMN1 = @Param1
SELECT @Param1, @Param2; // This select is causing problem.
SELECT @Param/0;
UPDATE TABLE2 SET COLUMN2 = @Param2
END
我正在使用SQL Server 2012后端开发Spring MVC项目。 我从DAO层调用以下SP,并从应用程序层处理事务。 问题是此过程不会在应用程序层中引发任何异常,并且发生了部分事务(TABLE1正在更新而TABLE2不是)。 为什么这个SP没有在应用层中引发异常?
答案 0 :(得分:1)
你需要在
上使用try catch和xact_abortalter proc usp_test
as
begin
set nocount on
set xact_abort on
begin try
select 1
select 1/0
select 2
end try
begin catch
declare @errormessg varchar(max)
raiserror(@errormessg,16,1);
end catch
end