ORA-30004 错误处理

一、问题情景:

原SQL:

select c.CATEGORY_ID,
       c.CATEGORY_NAME,
       SYS_CONNECT_BY_PATH(c.CATEGORY_NAME, '/') PATH
  from TBL_CATEGORY_PATH c
 start with c.CATEGORY_ID = 0
connect by c.PARENT_NODE_ID =prior c.NODE_ID

在执行上述SQL语句时,Oracle报错误 ORA-30004 具体出错如下:

出错:java.sql.SQLException: ORA-30004: when using SYS_CONNECT_BY_PATH function, cannot have seperator as part of column value

二、分析:

错误提示的含义是:当使用SYS_CONNECT_BY_PATH 函数时,不能将分隔符作为字段值的一部分。

根据此含义,猜测是否某条记录的该字段内容包含有我们的分割符“/”。据此思路,检查了所有记录的“CATEGORY_NAME”字段内容,确实发现了有一条记录该字段内容就包含了“/”。

 

三、最简单的办法是改用其他的分割符号就可以。

select c.CATEGORY_ID,
       c.CATEGORY_NAME,
       SYS_CONNECT_BY_PATH(c.CATEGORY_NAME, '||') PATH
  from TBL_CATEGORY_PATH c
 start with c.CATEGORY_ID = 0
connect by c.PARENT_NODE_ID = c.NODE_ID

http://www.xueshengweb.com 最火最热 学省网 积分=¥=iphone 购物返积分
原文地址:https://www.cnblogs.com/since1499/p/3424783.html