java - 使用 springframework SimpleJdbcCall 捕获 RAISE_APPLICATION_ERROR
问题描述
我有一个调用的 PL/SQL 过程
RAISE_APPLICATION_ERROR (-20001, 'Illegal id');
如果事情变糟了。
这似乎可行,因为该过程退出并在应该时抛出错误。
我调用这个过程使用
simpleJdbcCall.execute(myargs)
但是当我捕捉到异常时,它是 DataAccessException 类型的。原因是 ORA-01403: 未找到数据
我似乎没有办法从我的 RAISE_APPLICATION_ERROR 电话中获取号码或消息。我怎样才能得到这些值?
解决方案
我们在我们的应用程序中做同样的事情;但是,ORA-20001 异常应该以 UncategorizedSQLException 的形式出现在 Spring 中。如果您看到 ORA-01403,那么我怀疑您的程序可能以不同的方式失败:您确定 Spring 提交的参数与您进行单元测试的参数相同吗?
如果你让你的 PL/SQL 过程除了引发 ORA-20001 之外什么都不做,你还会从 Spring 获得 ORA-01403 吗?您确定要对 PL/SQL 进行单元测试并将 Java 应用程序附加到同一个数据库吗?
推荐阅读
- python - 如何在多处理中与另一个脚本共享全局变量?
- python - 数组中每个元素的最小值
- php - 即使在清除缓存和更改 CSS 版本之后,CSS 文件也会被缓存
- python - 函数执行和不执行的区别(返回变量)
- c# - Xamarin Nuget Manager 现在指向 csproj 文件而不是 ProjectFolder/packages
- javascript - 使用 HTML 表单图像通过 ONNX.js 执行推理
- azure - 管道迁移工作 - 一直在使用它并收到错误没有命名的端点或同名的重复项
- python - 托管 AWS 服务(例如 Managed Airflow (MWAA))能否在完全本地的数据资源上用于云中?
- c# - Fluent nhiberbate 组件总是被实例化
- mysql - 如何将 Buffer 值插入 mysql 数据库?