java - 如何从Java中的错误消息中去除Oracle错误代码?

标签 java oracle

如何摆脱 Java 中捕获的所有自定义 Oracle 错误消息开头的 Oracle 错误代码?

String r = errorMessage.replaceFirst("^ORA-\\d+:?\\s?", "");

有更好的方法吗?

Oracle 还在我漂亮的错误消息中添加了一些垃圾,因此后面是

ORA-06512: at "MY_SERVER.PKG_TEST", line 470
ORA-06512: at "MY_SERVER.PKG_TEST", line 406
ORA-06512: at "MY_SERVER.PKG_TEST", line 611
ORA-06512: at "MY_SERVER.PKG_TEST", line 643

最佳答案

ORA 错误始终为 ORA + 5 位数字,例如

SQL> select 1
  2  from emp
  3  where deptno = (select deptno from dept);
where deptno = (select deptno from dept)
                *
ERROR at line 3:
ORA-01427: single-row subquery returns more than one row


SQL>

ORA-01427 就是其中之一。这意味着 - 如果您知道如何(我不知道,因为我不会说 Java),请删除前 9 个字符(或 11,以删除 : 和一个空格)就这样了。例如,在 Oracle 中使用 substr:

SQL> select substr('ORA-01427: single-row subquery returns more than one row', 12) result from dual;

RESULT
---------------------------------------------
single-row subquery returns more than one row

SQL>

换句话说,不需要复杂正则表达式。

关于java - 如何从Java中的错误消息中去除Oracle错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61372719/

相关文章:

Java - openCV - 实时摄像机馈送上的区域选择

Java 不兼容的条件操作数类型 int 和 boolean

java - 无法从java向数据库添加新用户

mysql - 欢笑中的数据库到数据库的复制

sql - 连接到为每行单独创建的整数范围

java - Jackson 对特定属性使用 getter

java - 在 ArrayAdapter 内启动 fragment

java - 在Java中将多维JSON数组解析为平面int列表

oracle - 为 JPA 中链接表的多对多实体自动生成 ID

oracle - 在包/存储过程中改变 session NLS_LENGTH_SEMANTICS=CHAR