首页 > 解决方案 > 使用 springframework SimpleJdbcCall 捕获 RAISE_APPLICATION_ERROR

问题描述

我有一个调用的 PL/SQL 过程

RAISE_APPLICATION_ERROR (-20001, 'Illegal id');

如果事情变糟了。

这似乎可行,因为该过程退出并在应该时抛出错误。

我调用这个过程使用

simpleJdbcCall.execute(myargs)

但是当我捕捉到异常时,它是 DataAccessException 类型的。原因是 ORA-01403: 未找到数据

我似乎没有办法从我的 RAISE_APPLICATION_ERROR 电话中获取号码或消息。我怎样才能得到这些值?

标签: javaplsqlspring-jdbcsimplejdbccall

解决方案


我们在我们的应用程序中做同样的事情;但是,ORA-20001 异常应该以 UncategorizedSQLException 的形式出现在 Spring 中。如果您看到 ORA-01403,那么我怀疑您的程序可能以不同的方式失败:您确定 Spring 提交的参数与您进行单元测试的参数相同吗?

如果你让你的 PL/SQL 过程除了引发 ORA-20001 之外什么都不做,你还会从 Spring 获得 ORA-01403 吗?您确定要对 PL/SQL 进行单元测试并将 Java 应用程序附加到同一个数据库吗?


推荐阅读