2016-06-24 9 views
0
<ENVVAR CSIM:dt="list"> 
<item CSIM:dt="struct"> 
<Category dt:dt="string">ENV</Category> 

<Name dt:dt="string">ABC</Name> 
<Value dt:dt="string">abc</Value> 
</item> 
<item CSIM:dt="struct"> 
<Category dt:dt="string">ENV</Category> 
<Name dt:dt="string">XYZ</Name> 
<Value dt:dt="string">xyz</Value> 
</item> 
</ENVVAR CSIM> 

をフェッチする私は現在PL SQL - CLOB(XML)データフェッチ - XMLタグのリストと構造体からすべてのデータ私は</p> <pre><code>Name Value ABC abc XYZ xyz </code></pre> <p>としてデータを取得したい

を使用しています

item[1]値のみを取得します。しかし、私はアイテム構造のすべての値を取得したい。どんな助けもありがとう。ありがとう。 PS:extractvalueの代わりにExtractを試したこともありますが、タグ形式のデータが得られます。

+0

完全なストアドプロシージャを表示してください –

答えて

1

あなたはXMLTableのここでは特に、XQueryを使用することができます。

select x.* 
from abc 
cross join xmltable (
    '/ENVVAR/item' 
    passing xmltype(abc.ioxml) 
    columns name varchar2(20) path 'Name', 
    value varchar2(20) path 'Value' 
) x; 

をあなたのXML文書に正しくCSIMの名前空間を宣言する必要があります。 xmlnsを追加したデモ:

with abc(ioxml) as (
    select '<ENVVAR CSIM:dt="list" xmlns:CSIM="http://www.example.com" xmlns:dt="http://www.example.com"> 
<item CSIM:dt="struct"> 
<Category dt:dt="string">ENV</Category> 
<Name dt:dt="string">ABC</Name> 
<Value dt:dt="string">abc</Value> 
</item> 
<item CSIM:dt="struct"> 
<Category dt:dt="string">ENV</Category> 
<Name dt:dt="string">XYZ</Name> 
<Value dt:dt="string">xyz</Value> 
</item> 
</ENVVAR>' from dual 
) 
select x.* 
from abc 
cross join xmltable (
    '/ENVVAR/item' 
    passing xmltype(abc.ioxml) 
    columns name varchar2(20) path 'Name', 
    value varchar2(20) path 'Value' 
) x; 

NAME     VALUE    
-------------------- -------------------- 
ABC     abc     
XYZ     xyz     
関連する問題

 関連する問題