2016-02-07 35 views
0
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不會引發應用層中的異常?Java應用程序層不捕獲SQL存儲過程異常

回答

1

,您將需要使用try漁獲物和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 
+0

看到這個[鏈接](http://stackoverflow.com/questions/34870909/sql-stored-procedure-exception-not-found-在-JAVA)。我已經嘗試過了。但沒有運氣。 – Esty

+0

哦... XACT_ABORT開啓。那就是魔法字..什麼? – Esty

+0

all or nothing。更多信息here..http://stackoverflow.com/questions/1150032/what-is-the-benefit-of-using-set-xact-abort-on-in-a-stored-procedure – TheGameiswar

相關問題