日期:2014-05-17  浏览次数:21983 次

ora-01489报错字符串过长
SQL code
select seq,
       name,
 substr(nam,2,nvl(instr(nam,'/',2)-2,length(nam))) name1,
 (case when lv < 3 then null else substr(nam,instr(nam,'/',1,lv - 1) + 1,instr(nam,'/',1,lv) - instr(nam,'/',1,lv - 1) - 1)  end) name2
  from (select m.*,
               level lv,
               SYS_CONNECT_BY_PATH(name, '/') nam,
               CONNECT_BY_ROOT parent_seq seq1
          from m
        connect by prior seq = parent_seq)
 where seq1 is null order by seq;

执行这段程序
ora-01489报错字符过长


用to_clob还是同样报错
SQL code
 select seq,
       name,
 substr(nam,2,nvl(instr(nam,'/',2)-2,length(nam))) name1,
 (case when lv < 3 then null else substr(nam,instr(nam,'/',1,lv - 1) + 1,instr(nam,'/',1,lv) - instr(nam,'/',1,lv - 1) - 1)  end) name2
  from (select m.*,
               level lv,
               to_clob(SYS_CONNECT_BY_PATH(name, '/')) nam,
               CONNECT_BY_ROOT parent_seq seq1
          from m
        connect by prior seq = parent_seq)
 where seq1 is null order by seq;

 
我没其他办法了 


我就是想找出树的路径,然后把路径按照‘/'分成多个字段

------解决方案--------------------
反正就是字符串连接得过长。才会出现这个错误。

但从你的代码来看,应该是有什么语法错误,才造成目前的这个错误。

可以贴一下你用到的表结构,实测一下。
------解决方案--------------------
初步看貌似没啥错误 报错在哪行呢?