尝试在PL/SQL中创建XML文件视图时收到错误消息ORA-19279:XPTY0004。有两个同名的XML标记
下面是一条XML消息:尝试在PL/SQL中创建XML文件视图时收到错误消息ORA-19279:XPTY0004。有两个同名的XML标记,sql,oracle,xml-namespaces,xmltype,xmltable,Sql,Oracle,Xml Namespaces,Xmltype,Xmltable,下面是一条XML消息: <Message xmlns="http://test.org"> <Request Promotion="MULANN"> <ExpireDate>23/10/2020 07:10</ExpireDate> <Entries> <Entry> <Product
<Message xmlns="http://test.org">
<Request Promotion="MULANN">
<ExpireDate>23/10/2020 07:10</ExpireDate>
<Entries>
<Entry>
<Product>
<Product Product="T1" />
</Product>
<Payment>
<Privacy>N</Privacy>
</Payment>
</Entry>
<Entry>
<Product>
<Product Product="T2" />
</Product>
<Payment>
<Privacy>N</Privacy>
</Payment>
</Entry>
<Entry>
<Product>
<Product Product="T3" />
</Product>
<Payment>
<Privacy>Y</Privacy>
</Payment>
</Entry>
</Entries>
</Request>
</Message>
我想得到这样的东西:
Promotion Privacy
MULANN N
MULANN Y
问题是XML有多个嵌套级别。 您可以通过链接XMLTABLEs来解决这个问题 如果嵌套子对象中并非所有信息都始终可用,则外部联接将有所帮助
SELECT DISTINCT
promotion,
privacy
FROM TableName,
XMLTABLE( XMLNAMESPACES( DEFAULT 'http://test.org'),
'/Message' PASSING XMLTYPE(xml_info)
COLUMNS promotion VARCHAR2(20) PATH 'Request/@Promotion',
entries XMLTYPE PATH 'Request/Entries/Entry'
) x1
LEFT OUTER JOIN (
XMLTABLE( XMLNAMESPACES( DEFAULT 'http://test.org'),
'/Entry' PASSING x1.entries
COLUMNS privacy VARCHAR2(1) PATH 'Payment/Privacy'
)) x2
ON 1=1;
SELECT DISTINCT
promotion,
privacy
FROM TableName,
XMLTABLE( XMLNAMESPACES( DEFAULT 'http://test.org'),
'/Message' PASSING XMLTYPE(xml_info)
COLUMNS promotion VARCHAR2(20) PATH 'Request/@Promotion',
entries XMLTYPE PATH 'Request/Entries/Entry'
) x1
LEFT OUTER JOIN (
XMLTABLE( XMLNAMESPACES( DEFAULT 'http://test.org'),
'/Entry' PASSING x1.entries
COLUMNS privacy VARCHAR2(1) PATH 'Payment/Privacy'
)) x2
ON 1=1;