Oracle XMLTable和GETXMLTYPE-如何将XML转换为行?
我有以下XML:Oracle XMLTable和GETXMLTYPE-如何将XML转换为行?,oracle,oracle11g,Oracle,Oracle11g,我有以下XML: <ROWSET> <ROW> <record_id>2</record_id> <catalog>Y</catalog> </ROW> </ROWSET> 基本上我想要: col_name, col_value record_id 2 catalog Y Oracle XMLDB完全支持。试试这个方法 with params as ( s
<ROWSET>
<ROW>
<record_id>2</record_id>
<catalog>Y</catalog>
</ROW>
</ROWSET>
基本上我想要:
col_name, col_value
record_id 2
catalog Y
Oracle XMLDB完全支持。试试这个方法
with params as (
select
xmltype('
<ROWSET>
<ROW>
<record_id>2</record_id>
<catalog>Y</catalog>
</ROW>
</ROWSET>
') p_xml
from dual
)
select
col_name, col_val
from
XMLTable(
'
for $i in $doc//descendant-or-self::*
return <element>
<element_path> {$i/string-join(self::*/name(.), ''/'')} </element_path>
<element_content> {$i/text()}</element_content>
</element>
'
passing (select p_xml from params) as "doc"
columns
col_name varchar2(4000) path '//element_path',
col_val varchar2(4000) path '//element_content'
)
where col_val is not null
with params as (
select
xmltype('
<ROWSET>
<ROW>
<record_id>2</record_id>
<catalog>Y</catalog>
</ROW>
</ROWSET>
') p_xml
from dual
)
select
col_name, col_val
from
XMLTable(
'
for $i in $doc//descendant-or-self::*
return <element>
<element_path> {$i/string-join(self::*/name(.), ''/'')} </element_path>
<element_content> {$i/text()}</element_content>
</element>
'
passing (select p_xml from params) as "doc"
columns
col_name varchar2(4000) path '//element_path',
col_val varchar2(4000) path '//element_content'
)
where col_val is not null