Problema no PARSE de XML
Fala galera,
Estou tentando fazer a leitura de um XML e salvar os dados em variavel para poder trabalhar com elas depois, mas o namespace tem me dado um pouco de trabalho, rs.
Vi uma solução na internet, tentei aplicar mas não deu certo. Alguém poderia ajudar?
create or replace PROCEDURE GERAR_OUT_QLT AS
v_xml clob := '
<?xml version="1.0" encoding="UTF-8" ?>
<ns1:MT_InventoryMovements_REXI xmlns:ns1="http://cnh.com/sapecc/mm/MMIIMC01">
<ESB_Header>
<ESB_Envelope>
<ESB_VERSION>1.0.0</ESB_VERSION>
<MSG_TYPE>
<MSG_TYPE_NAME>REXI</MSG_TYPE_NAME>
<REX_INDICATOR>00001/00001</REX_INDICATOR>
<REX_ATTEMPT_INDICATOR>00</REX_ATTEMPT_INDICATOR>
<MSG_INDICATOR>00001/00001</MSG_INDICATOR>
<SUBFLOW>
<SUBFLOW_NAME>MMLIMC01CO</SUBFLOW_NAME>
<SUB_LOGICAL_RECORD_INDICATOR />
</SUBFLOW>
</MSG_TYPE>
<TID>10000000000000406916</TID>
<TID_TIME_STAMP>2017-01-03 18:33:33</TID_TIME_STAMP>
<IDFLOW>MMLIMC01</IDFLOW>
<SENDER>BS_CNH_CLICK_CO_QAL</SENDER>
<LOGICAL_TARGET>BS_CNH_SAPR3_URN</LOGICAL_TARGET>
<FLOW_VERSION>001</FLOW_VERSION>
</ESB_Envelope>
<ESB_Attributes />
</ESB_Header>
<ESB_Payload>
<goods_movement>
<header>
<PSTNG_DATE>20170103</PSTNG_DATE>
<DOC_DATE>20170301</DOC_DATE>
<REF_DOC_NO>123456</REF_DOC_NO>
<VENDOR>BPG95</VENDOR>
<PR_UNAME>CLICK</PR_UNAME>
<CODE_GM_CODE>01</CODE_GM_CODE>
<item>
<PLANT>CB01</PLANT>
<MATERIAL>14497101</MATERIAL>
<SOURCE_STGE>W100</SOURCE_STGE>
<DEST_STGE>W100</DEST_STGE>
<MOVE_TYPE>107</MOVE_TYPE>
<ENTRY_QNT>0000000001.000</ENTRY_QNT>
<ENTRY_UOM>ST</ENTRY_UOM>
<PO_PR_QNT>0000000000.000</PO_PR_QNT>
<PO_NUMBER>CB10003230</PO_NUMBER>
<ITEM_PO_ITEM>00001</ITEM_PO_ITEM>
<MVT_IND>B</MVT_IND>
</item>
</header>
</goods_movement>
</ESB_Payload>
</ns1:MT_InventoryMovements_REXI>';
XML_PSTNG_DATE VARCHAR(255) := '';
XML_DOC_DATE VARCHAR(255) := '';
XML_REF_DOC_NO VARCHAR(255) := '';
XML_VENDOR VARCHAR(255) := '';
XML_CODE_GM_CODE VARCHAR(255) := '';
XML_MATERIAL VARCHAR(255) := '';
XML_STCK_TYPE VARCHAR(255) := '';
XML_ENTRY_QNT VARCHAR(255) := '';
/*************************************************************************************/
CURSOR C_NEWREG(p_xml clob) IS
SELECT XMLQLD.*
FROM (SELECT xmltype(p_xml) AS XML FROM DUAL) V,
XMLTABLE(XMLNAMESPACES('http://cnh.com/sapecc/mm/MMIIMC01' AS X), '/ESB_Payload/goods_movement/header' PASSING V.XML COLUMNS
XML_PSTNG_DATE VARCHAR2 (4000) PATH 'X:PSTNG_DATE'
)XMLQLD;
R C_NEWREG%ROWTYPE;
/*************************************************************************************/
BEGIN
FOR R IN C_NEWREG(v_xml) LOOP
DBMS_OUTPUT.PUT_LINE('XX > XML_PSTNG_DATE ' || r.XML_PSTNG_DATE);
END LOOP;
END;Discussão (0)
Carregando comentários...