oracle mos账号如何收费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,具体如下图:

 

 

二、分析:

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

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

 

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

select c.CATEGORY_ID,

      &nbsporacle账号;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

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。