我试图创建一个XML输出文件,通过创建一个过程并使用该过程进行并发请求。请找到下面的软件包程序代码。ORA-22806:生成XML输出时不是对象或REF:错误
并发程序误码出与
“原因:FDPSTP失败,原因是ORA-19202:发生在XML处理ORA-22806错误:不是一个对象或REF”。
CREATE OR REPLACE PACKAGE BODY xx_outbound_xml1
AS
PROCEDURE xx_insert_outbound_xml1 (
errbuff OUT VARCHAR2,
errcode OUT NUMBER
)
IS
ln_ctx DBMS_XMLGEN.ctxhandle;
lc_xml_clob CLOB;
BEGIN
ln_ctx :=
DBMS_XMLGEN.newcontext
( 'SELECT XMLELEMENT("litleRequest",
XMLATTRIBUTES('
|| 'to_char(sysdate,''DDMMYYYHH24MI:SS'')'
|| ' AS "Id" ),
(SELECT
XMLAGG(
XMLELEMENT(
evalname(Decode((select order_type FROM my_orders WHERE order_id = mo.order_id),''CO'',''"Credit"'',''"Sale"'')).getstringval(),
XMLFOREST (
mo.order_id AS "orderId",
mo.order_type as "orderType"
)
)
)
FROM my_orders mo
)
) xml
FROM dual'
);
DBMS_XMLGEN.setrowsettag (ln_ctx, NULL);
DBMS_XMLGEN.setrowtag (ln_ctx, NULL);
--DBMS_XMLGEN.setNullHandling(ln_ctx,dbms_xmlgen.EMPTY_TAG);
lc_xml_clob := DBMS_XMLGEN.getxml (ln_ctx);
lc_xml_clob := REPLACE (lc_xml_clob, '', '');
lc_xml_clob := REPLACE (lc_xml_clob, '', '');
DBMS_XSLPROCESSOR.clob2file (lc_xml_clob,
'INBOUNDFOLDER',
'output.xml',
0
);
DBMS_LOB.freetemporary (lc_xml_clob);
END xx_insert_outbound_xml1;
END xx_outbound_xml1;
如果订单类型是CO然后标记应该是信用卡或如果ORDER_TYPE是SO然后标记应该是销售。
我的输出应该是这样的: