【发布时间】:2018-08-24 12:02:41
【问题描述】:
当我们最近将数据库系统从 Oracle llg 升级到 12c 时,我们开始遇到 LPX-00209 问题。我正在尝试找到解决我现在收到错误的原因。
我发现了下面的问题。我们迁移到 Oracle 12c,发现 l_xml.transform(XMLTYPE (l_xslt)) 在更高版本的 Oracle 中不再有效。下面是我的过程,尝试使用 XSL 样式表转换 XML。我可以使用另一个函数来代替 l_xml.transform(XMLTYPE (l_xslt))。一旦它转换了 XML,然后将其传回并尝试使用 p_resulting_xml.getclobval() 将此 XMl 放入一个 clob 并传递给过程 write_file_email。
下面解释问题的 Oracle 支持文档。
https://support.oracle.com/knowledge/Oracle%20Database%20Products/1642080_1.html
PROCEDURE end_workbook(p_report_clob IN OUT CLOB,
p_xml IN OUT XMLTYPE)
IS
l_xslt CLOB;
l_xml XMLTYPE;
BEGIN
Dbms_Lob.Writeappend(p_report_clob, 13, '</WORKSHEETS>');
l_xml := XMLTYPE(p_report_clob,NULL,0,1);
Dbms_Lob.Freetemporary (p_report_clob);
l_xslt := load_file('EXT_XSL_IN_DIR', 'ndu_sfich_report.xsl');
p_xml := l_xml.transform(XMLTYPE (l_xslt));
END end_workbook;
PROCEDURE write_file_email(p_filename IN VARCHAR2
,p_resulting_xml IN XMLTYPE
,p_first_visible_worksheet IN PLS_INTEGER DEFAULT 0)
IS
BEGIN
write_file (p_dir => pb_gen_report_dir -- VARCHAR2
,p_filename => p_filename -- VARCHAR2
,p_file => p_resulting_xml.getclobval() -- CLOB
,p_openmode => 'W' -- VARCHAR2
,p_first_visible_worksheet => p_first_visible_worksheet); --PLS_INTEGER
下面的错误信息
15:02:40 Error: ORA-31011: XML parsing failed
ORA-19213: error occurred in XML processing at lines 1
LPX-00209: PI names starting with XML are reserved
ORA-06512: at "SYS.XMLTYPE", line 138
ORA-06512: at "PRBLK.NDU_REPORTING", line 330
ORA-06512: at "PRBLK.NDU_SFICH_REPORTING", line 1299 ORA-06512: at line 1
【问题讨论】:
标签: xml plsql oracle12c clob xmltype