当前位置: 代码迷 >> Oracle开发 >> oracle生成xml时出ORA-06512异常,请教如何解决
  详细解决方案

oracle生成xml时出ORA-06512异常,请教如何解决

热度:27   发布时间:2016-04-24 06:41:31.0
oracle生成xml时出ORA-06512错误,请问怎么解决?
错误信息:
ORA-31011:XML语法分析失败
ORA-19202:XML处理
LPX-00241:实体引用的形式不正确
Error at line 19 时出错
ORA-06512:在“SYS.XMLTYPE”,line 5..
错误说的什么 line 19,我都不知道是哪儿 。其中 RemoveHtmlTags 这个是自定义的函数,去除html标记的
求大神解答!

SELECT 
sys.xmlType.createXML('<SERVICE_ITEM SEQ="'||T.SEQ||'">'||CHR(10)||
'<SERVICE_ITEM_ID>'||T.SERVICE_ITEM_ID||'</SERVICE_ITEM_ID>'||CHR(10)||
'<SERVICE_SOURCE>'||T.SERVICE_SOURCE||'</SERVICE_SOURCE>'||CHR(10)||
'<OWNER_ID>'||T.OWNER_ID||'</OWNER_ID>'||CHR(10)||
'<SERVICE_NAME>'||T.SERVICE_NAME||'</SERVICE_NAME>'||CHR(10)||
'<REGISTER_DATE>'||T.REGISTER_DATE||'</REGISTER_DATE>'||CHR(10)||
'<USED_NUM>'||T.USED_NUM||'</USED_NUM>'||CHR(10)||
'<SERVICE_CLASS>'||T.SERVICE_CLASS||'</SERVICE_CLASS>'||CHR(10)||
'<LINKMAN>'||T.LINKMAN||'</LINKMAN>'||CHR(10)||
'<TEL>'||T.TEL||'</TEL>'||CHR(10)||
'<EMAIL>'||T.EMAIL||'</EMAIL>'||CHR(10)||
'<SERVICE_OBJECT>'||T.SERVICE_OBJECT||'</SERVICE_OBJECT>'||CHR(10)||
'<SERVICE_METHOD>'||T.SERVICE_METHOD||'</SERVICE_METHOD>'||CHR(10)||
'<SERVICE_PROCEDURE>'||T.SERVICE_PROCEDURE||'</SERVICE_PROCEDURE>'||CHR(10)||
'<CHARGE_METHOD>'||T.CHARGE_METHOD||'</CHARGE_METHOD>'||CHR(10)||
'<FROM_URL>'||T.FROM_URL||'</FROM_URL>'||CHR(10)||
'</SERVICE_ITEM>').getStringVal()  AS TEMP 
FROM (SELECT 
  RANK() OVER (ORDER BY A.INPUTDATE DESC) SEQ, --记录号
  A.ITEMID AS SERVICE_ITEM_ID, --服务项目编码
  DECODE(A.SOURCE, 1, 1, 2, 1, 3, 2) AS SERVICE_SOURCE, --服务来源(1平台,2服务机构)
  A.SORGID AS OWNER_ID, --平台编码或者机构编码
  A.SERVICEITEMNAME AS SERVICE_NAME, --服务名称
  A.INPUTDATE AS REGISTER_DATE, --注册时间
  A.APPLYTIMES AS USED_NUM, --服务次数
  A.SVCID AS SERVICE_CLASS, --服务分类
  A.CONTACT_PERSON AS LINKMAN, --服务联系人
  A.CONTACT_PHONE AS TEL, --联系电话
  A.CONTACT_EMAIL AS EMAIL, --电子邮箱
  REPLACE(A.SVOLISTID, ',', ';') AS SERVICE_OBJECT, --服务对象
  RemoveHtmlTags(REPLACE(A.SVMLISTID, ',', ';')) AS SERVICE_METHOD, --服务方式
  RemoveHtmlTags(A.CONTENT) AS SERVICE_PROCEDURE, --服务和服务流程描述
  CASE 
  WHEN A.CHARGINGMETHOD IS NULL THEN A.CHARGE 
  WHEN A.CHARGINGMETHOD = '1' THEN A.CHARGE 
  WHEN A.CHARGINGMETHOD = '2' THEN A.CHARGE || CHR(13) || CHR(10) || '收费:' || TRIM(TO_CHAR(NVL(A.PRICERANGE1, 0), '99,999,990.00')) || '~' || TRIM(TO_CHAR(NVL(A.PRICERANGE2, 0), '99,999,990.00')) || ' 元' 
  WHEN A.CHARGINGMETHOD = '3' THEN A.CHARGE || CHR(13) || CHR(10) || '收费:面议' 
  WHEN A.CHARGINGMETHOD = '4' THEN A.CHARGE END AS CHARGE_METHOD,--收费模式 
  (SELECT /*+ FULL(SYS_SYSCODE) */ BREVIARY FROM SYS_SYSCODE WHERE TYPEID = 'DATASHARING' AND ID = '5') || A.ITEMID AS FROM_URL --数据来源URL
 FROM PLTF_SRVPROJECT A 
 WHERE EXISTS (SELECT DATAID FROM PLTF_SYNCLOG WHERE TYPEID = 'SERVICE_ITEMS' AND UPLOAD = 0 AND A.ITEMID = DATAID)
 ORDER BY A.INPUTDATE DESC ) T     

------解决方案--------------------
前排学习。望大神多多照顾!!
------解决方案--------------------
还钱
------解决方案--------------------
对XML类型不熟悉

感觉可以从 LPX-00241 这个错误入手:
LPX-00241 entity reference is not well formed
Cause: An entity reference (general or parameter) was not formed properly.

Action: Form entity reference correctly as "&name;" or "%name;".
  相关解决方案