У меня есть xml, который выглядит ниже
<ibm:dept bldg="123" xmlns:ibm="http://www.ibm.com/xmltable">
<ibm:employee id="144">
<ibm:name>
<ibm:first>James</ibm:first>
<ibm:last>Bond</ibm:last>
</ibm:name>
<ibm:office>007</ibm:office>
<ibm:phone>905-007-1007</ibm:phone>
<ibm:salary currency="USD">77007</ibm:salary>
</ibm:employee>
</ibm:dept>'
Я пытаюсь разобрать его с помощью функции XMLTable. Это то, что я пробовал -
select x.*,
y.*
from xml_tab t,
XMLTable(XMLnamespaces('http://www.ibm.com/xmltable' as "ibm"),
'ibm:dept/ibm:employee'
passing t.xml_data
columns
empid NUMBER path '@id',
office VARCHAR2(5) path 'ibm:office',
name XMLTYPE path 'ibm:name'
) x,
XMLTable(
'ibm:name'
passing x.name
columns
firstname VARCHAR2(10) path 'ibm:first',
lastname VARCHAR2(10) path 'ibm:last') y
where t.id =3;
Однако, это ошибка с ошибкой ниже
ORA-19228: XPST0008 - undeclared identifier: prefix 'ibm' local-name 'ibm:name'
Надеясь, что кто-то может объяснить ошибку. ура!
Настройка данных
create table xml_tab
(
id NUMBER,
xml_data XMLType
);
insert into xml_tab
values(3, XMLType.createXML('<ibm:dept bldg="123" xmlns:ibm="http://www.ibm.com/xmltable">
<ibm:employee id="144">
<ibm:name>
<ibm:first>James</ibm:first>
<ibm:last>Bond</ibm:last>
</ibm:name>
<ibm:office>007</ibm:office>
<ibm:phone>905-007-1007</ibm:phone>
<ibm:salary currency="USD">77007</ibm:salary>
</ibm:employee>
</ibm:dept>'));