Java Application层没有捕获SQL存储过程异常

时间:2016-02-07 08:48:00

标签: sql-server hibernate spring-mvc

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没有在应用层中引发异常?

1 个答案:

答案 0 :(得分:1)

你需要在

上使用try catch和xact_abort
alter 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