Мы должны прочитать xml, используя pl/sql. Верхние несколько строк xml вставляются ниже. В xml для одного узла есть одно Оборудование. Для одного Оборудования есть несколько шкафов. Для одного Кабинета есть несколько Subrack & для одного Subrack есть несколько плат.Чтение xml с использованием Oracle
Мы проанализировали ниже запрос.
Шаг-1:
create table emp_xml of xmltype xmltype store as securefile binary xml;
Шаг 2:
insert into emp_xml values (xmltype(bfilename('XML_DIR','ahm_2015_04_01_172428.xml'), nls_charset_id('AL32UTF8')));
Шаг 3:
select * from emp_xml;
Шаг 4:
select x.*
from emp_xml t,
xmltable(xmlnamespaces(default 'http://www.ericsson.com/axe/export/hw'(http ://
www.ericsson.com/axe/
export/
hw%27)),
'/NetworkInventory/Node' passing t.object_value columns
SiteName varchar2(10) path '@Name',
SiteType varchar2(10) path '@Type',
BuildingPractice varchar2(10) path
'//Equipment/@BuildingPractice') x;
Этот запрос работает отлично. Но когда я пытаюсь получить детали Кабинета или Subrack, мы становимся ниже ошибки.
ORA-19279: XPTY0004 - XQuery dynamic type mismatch: expected singleton sequence - got multi-item sequence
ORA-06512: at line 33
19279. 00000 - "XQuery dynamic type mismatch: expected singleton sequence - got multi- item sequence"
*Cause: The XQuery sequence passed in had more than one item.
*Action: Correct the XQuery expression to return a single item sequence.
Ниже приводится несколько строк XML.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<NetworkInventory xmlns="http://www.ericsson.com/axe/export/hw" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ericsson.com/axe/export/hw file:/opt/ericsson/nms_smo_srv/etc/export.xsd">
<Description>AXE HARDWARE INVENTORY DATA</Description>
<ExportDateTime Date="2015-04-01" Time="17:24:28"/>
<Node AdjustDate="2015-03-21" FunctionType=" " Name="BSC20" Site=" " Type="AXE" UserLabel="">
<Equipment BuildingPractice="BYB501">
<Cabinet Position="CabNumber=1">
<Subrack Name="FAN-1" Position="X=3,Y=2" Type="CP">
<Board Name=" " SlotPosition="255" Type="CP">
<ProductData FirstOperationDate="2013-11-20" LastChangedDate="2013-11-20" ManufacturedDate=" " ProductName=" " ProductNumber=" " ProductRevision=" " SerialNumber=" " Supplier="Ericsson AB"/>
</Board>
<Board Name=" " SlotPosition="255" Type="CP">
<ProductData FirstOperationDate="2013-11-20" LastChangedDate="2013-11-20" ManufacturedDate=" " ProductName=" " ProductNumber=" " ProductRevision=" " SerialNumber=" " Supplier="Ericsson AB"/>
</Board>
</Subrack>