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

还是正则式,不过有可能是库的问题
WITH TT AS(SELECT REPLACE(REPLACE(TRIM(COLUMN_VALUE), CHR(13), ''), CHR(10), '') PARAM_NAME
  FROM TABLE(F_PUB_BIND_IN(REPLACE('217_成功项目<$>2_联系人电话',
  '<$>',
  ','))) T)
  SELECT * FROM TT;
  ----这句我放在一个库不会报错
WITH TT AS(SELECT REGEXP_SUBSTR(PARAM_NAME, '[0-9]+', 1, 1)PARAM_ID
  FROM (SELECT REPLACE(REPLACE(TRIM(COLUMN_VALUE), CHR(13), ''), CHR(10), '') PARAM_NAME
  FROM TABLE(F_PUB_BIND_IN(REPLACE('217_成功项目<$>2_联系人电话',
  '<$>',
  ','))) T))
  SELECT * FROM TT;
[color=#FF0000][/color]这个却报错了。 报错信息是通信通道的文件结束;

但是报错的这句我放到另外一个库却没报错


------解决方案--------------------
这还要肿么解释,第二种写法触发了oracle该版本的bug呗。
之前我写过的sql 利用 COLUMN_VALUE TABLE() 的别人的数据库木有问题,我的也报这个错误,后来只能换写法。

------解决方案--------------------
检查下alert_<SID>.log日志文件,是否有ORA-00600或者ORA-07445的错误,把错误信息帖出来。
------解决方案--------------------
我勒个去的我的4楼在哪里。。。
哎~

这是数据库版本问题,当初我用 column_value 和 table()的写法,用正则也报你的错误,后来只能改写法。
就是 http://topic.csdn.net/u/20110731/15/09d64fe5-3dfe-4116-8682-10b71f16b26b.html?54772 我1楼的写法, 如果我用正则regexp_substr 就报你的错,但是别人版本高的库就没问题。
------解决方案--------------------
是不是网络问题?