Я пытаюсь извлечь xml в вывод таблицы, разделенный строками.Извлечь XML в строки из поля Oracle CLOB
Данные является CLOB поля в базе данных Oracle следующим образом:
<emailInfo>
<recipientList>
<recipientName>ATS</recipientName>
<recipientEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
</recipientEmailList>
<contactEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
<contactEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
</contactEmailList>
<escalationEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
</escalationEmailList>
</recipientList>
<recipientList>
<recipientName>ERG</recipientName>
<recipientEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
</recipientEmailList>
<contactEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
</contactEmailList>
<escalationEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
</escalationEmailList>
<escalationEmailList>
<emailAddress>[email protected]</emailAddress>
<statusFlag>F1AC</statusFlag>
</escalationEmailList>
</recipientList>
</emailInfo>
EDIT2: Мой обновленный SQL-запрос выглядит следующим образом:
SELECT t.*, m.*, p.*, l.*
FROM cisadm.F1_ext_lookup_val exval,
XMLTABLE ('/emailInfo/recipientList'
PASSING XMLTYPE (exval.bo_data_area)
COLUMNS recipient_name VARCHAR2 (4000) PATH 'recipientName',
recipient_email_list XMLTYPE PATH '/recipientEmailList',
contact_email_list XMLTYPE PATH '/contactEmailList',
escalation_email_list XMLTYPE PATH '/escalationEmailList') t,
XMLTABLE ('/recipientEmailList'
PASSING (t.recipient_email_list)
COLUMNS recipient_email_address VARCHAR2 (4000) PATH '/emailAddress',
rec_email_status_flg VARCHAR2 (10) PATH '/statusFlag') m,
XMLTABLE ('/contactEmailList'
PASSING (t.contact_email_list)
COLUMNS contact_email_address VARCHAR2 (4000) PATH 'contactEmailList/emailAddress',
contact_email_status_flg VARCHAR2 (10) PATH 'contactEmailList/statusFlag'
) p,
XMLTABLE('/escalationEmailList'
PASSING (t.escalation_email_list)
COLUMNS esc_email_address VARCHAR2(4000) PATH 'escalationEmailList/emailAddress',
esc_email_status_flg VARCHAR2(10) PATH 'escalationEmailList/statusFlag'
) l
Я пытаюсь предоставление за то, что может быть несколько значений для каждого списка адресов получателей, списка контактов электронной почты и списка эскалации электронной почты.
вывод должен быть:
Любая помощь будет так признателен!
пара ссылок может помочь вам https://community.oracle.com/thread/2239392?tstart=0 и http://stackoverflow.com/questions/18589276/xml-oracle-multiple-child-node -extract –
Рассмотрите возможность использования языка общего назначения, такого как Python, PHP, C#, Java, который будет масштабируемым и поддерживаемым, поскольку SQL является языком специального назначения, а различные RDMS обрабатывают XML-данные по-разному. Несколько недель назад, также для вопроса Oracle, я изложил решения в обратном SQL-> XML, используя [open-source] (http://stackoverflow.com/questions/32424049/build-an-xml-with-xmlelement-oracle -SQL-11g-запрос/32425800 # 32425800). – Parfait