プロシージャを作成してXML出力ファイルを作成し、そのプロシージャを同時リクエストに使用しようとしています。以下のパッケージ手順コードを見つけてください。
並行プログラムでエラーが発生しました
「原因:ORA-19202が原因でFDPSTPが失敗しました: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, '<XML>', '');
lc_xml_clob := REPLACE (lc_xml_clob, '</XML>', '');
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の場合、タグはCreditである必要があり、order_typeがSOの場合、タグはSalesである必要があります。
私の出力は次のようになります: