【问题标题】:Catching RAISE_APPLICATION_ERROR with springframework SimpleJdbcCall使用 springframework SimpleJdbcCall 捕获 RAISE_APPLICATION_ERROR
【发布时间】:2020-08-20 16:00:19
【问题描述】:

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

RAISE_APPLICATION_ERROR (-20001, 'Illegal id');

如果出现问题。

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

我调用这个过程使用

simpleJdbcCall.execute(myargs)

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

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

【问题讨论】:

    标签: java plsql spring-jdbc simplejdbccall


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多