gpt4 book ai didi

java 没有捕获 ms sql 存储过程引发错误

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:20 25 4
gpt4 key购买 nike

我的 SQL Server 2008 数据库中有一个存储过程,我正在开发一个使用 sqljdbc4 连接的 Java 应用程序。一切正常,甚至是过程调用,但有一件事 - 在某些情况下,java 不会捕获过程抛出的引发的异常,并在调用时指定,如选择或更新(删除插入)

举个例子

AS
BEGIN
DECLARE @c INT
SELECT @c= COUNT(nomUtilisateur)
FROM Utilisateur2
PRINT @c
RAISERROR(N'error message personalise',18,1)
END

在这种情况下 java 捕获异常

try{
CallableStatement cll=con.prepareCall("EXEC f3 ");
cll.execute();

System.out.println("fin EXEC f3 ? ");}
catch (SQLException e) {
System.out.println("sqlerror state: "+e.getSQLState() +" |error code: "
+ e.getErrorCode()+" |message: "+e.getMessage());
e.printStackTrace();
}

但是当我使用这样的选择时


ALTER PROCEDURE [dbo].[f3]
AS
BEGIN
declare @c INT
SELECT @c= COUNT(nomUtilisateur)
FROM Utilisateur2
<b>select * from Utilisateur2</b>
PRINT @c
RAISERROR(N'error message personalise',18,1)
END

或更新,java 继续执行而不会捕获异常。就像它不等待程序结束。

所以我的问题是,我是否错误地使用了存储过程,或者它是 jdbc 驱动程序中的错误,还是它更喜欢使用 out 参数并保留此策略;我用谷歌搜索了这个问题但没有找到任何东西。

就我个人而言,我想使用引发的错误

最佳答案

尝试删除 PRINT 语句并在 proc 的代码中放入“SET NOCOUNT ON”,这可能是驱动程序感到困惑。

关于java 没有捕获 ms sql 存储过程引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com