Sql server 在JAVA中找不到SQL存储过程异常

Sql server 在JAVA中找不到SQL存储过程异常,sql-server,hibernate,spring-mvc,jpa,exception-handling,Sql Server,Hibernate,Spring Mvc,Jpa,Exception Handling,从sql存储过程catch块引发异常不会引发SP1的java层异常,而会引发SP2异常 当我执行这两个SP时,它们在SQL Server中都出现异常,但从java代码中,我没有发现SP1异常 我使用JPA StoredProcess和Hibernate&Spring调用这两个SP CREATE PROCEDURE SP1 AS SET NOCOUNT ON BEGIN TRY DECLARE @ErrorMessage AS VARCHAR(MAX) SELECT 1/0 END TRY B

从sql存储过程catch块引发异常不会引发SP1的java层异常,而会引发SP2异常

当我执行这两个SP时,它们在SQL Server中都出现异常,但从java代码中,我没有发现SP1异常

我使用JPA StoredProcess和Hibernate&Spring调用这两个SP

CREATE PROCEDURE SP1
AS
SET NOCOUNT ON

BEGIN TRY
DECLARE @ErrorMessage AS VARCHAR(MAX)
SELECT 1/0
END TRY

BEGIN CATCH
THROW 50001, @ErrorMessage, 1;
END CATCH


CREATE PROCEDURE SP2
AS
SET NOCOUNT ON

DECLARE @ErrorMessage AS VARCHAR(MAX)
SELECT 1/0
if @@error<>0
GOTO Erro

RETURN
Erro:
THROW 50001, @ErrorMessage, 1;
创建过程SP1
作为
不计较
开始尝试
将@ErrorMessage声明为VARCHAR(最大值)
选择1/0
结束尝试
开始捕捉
抛出50001,@ErrorMessage,1;
端接
创建过程SP2
作为
不计较
将@ErrorMessage声明为VARCHAR(最大值)
选择1/0
如果@@error0
后藤埃罗
返回
错误:
抛出50001,@ErrorMessage,1;

我已经测试过,如果我在TRY块中使用任何THROW,它会在Java端引发异常,而在CATCH块中不会引发异常。

我也看到了这里的帖子,但答案并不能说服我。java真的不支持SQL Try Catch吗?共享sys.messages中的
SELECT*结果,其中message_id=50001
,如果您尝试使用JDBC CallableStatement进行调用?@lad2025 result为null表示没有返回行。但我认为这并不重要,因为不带任何参数的THROW应该引发异常。@NeilStockton我没有尝试调用JDBC CallableStatement。