2014-01-10 47 views
0

我知道有很多關於它的問題,但我沒有設法解決我的例子中的問題。我在Oracle數據庫xlmtype柱:Oracle xlmtype如何提取

<?xml version="1.0" encoding="utf-8"?> 
<ApplicationProductFields> 
    <string> 
<field name="A">aaa</field> 
<field name="B">bbb</field> 
<field name="C">ccc</field> 
<field name="D">ddd</field> 
</string> 
<int> 
<field name="E">1</field> 
<field name="F">2</field> 
</int> 
</ApplicationProductFields> 

如何通過查詢其轉換爲傳統的數據是這樣的:

FIELD_NAME  VALUE 
A    aaa 
B    bbb 
C    ccc 
D    ddd 
E    1 
F    2 

Oracle不允許查詢

使用像字符串或字段名名

回答

1

下面是一個例子:

WITH test 
    AS (SELECT xmltype ('<?xml version="1.0" encoding="utf-8"?> 
<ApplicationProductFields> 
    <string> 
<field name="A">aaa</field> 
<field name="B">bbb</field> 
<field name="C">ccc</field> 
<field name="D">ddd</field> 
</string> 
<int> 
<field name="E">1</field> 
<field name="F">2</field> 
</int> 
</ApplicationProductFields>') data 
      FROM DUAL) 
SELECT EXTRACTVALUE (VALUE (x), 'field/@name') FIELD_NAME, 
     EXTRACTVALUE (VALUE (x), 'field') VALUE 
    FROM test, 
     TABLE (
      XMLSEQUENCE (
      EXTRACT (test.data, '/ApplicationProductFields/*/field'))) x; 

我會建議花幾天時間,讀ŧ他documenation看看每個上述功能做什麼,並學習XPath語法。