1
我在Oracle中有一列存在XML,存儲爲CLOB類型。我的意圖是解析這個XML並檢索對應於感興趣列的數據。這是XML結構:如何在Oracle中使用以下XML中的XML表格
<ns:ABCDE xmlns:ns="http://www.something.com/something" xmlns:mno="http://www.somethingelse.com/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ns:ABCDE">
<GGGGG>
<G1>G1_val</G1>
<G2>G2_val</G2>
<G3>G3_val</G3>
</GGGGG>
<PPPPP>
...
</PPPP>
</ns:ABCDE>
這是SQL代碼,我有:
select x.*,p.*
from ppp p ,xmltable(
xmlnamespaces(default 'ABCDE',
'http://www.something.com/something' as "ns",
'http://www.somethingelse.com/05' as "mno",
'http://www.w3.org/2001/XMLSchema-instance' as "xsi",
'ns:ABCDE' as "type"
),
'/ns:ABCDE'
PASSING xmltype(p.someCLOB_column)
COLUMNS G1 varchar(32) PATH '/GGGGG'
) x
然而,在運行SQL後,不顯示任何錯誤,但沒有記錄被取出要麼。作爲此查詢的結果,我期待得到「G1_val
」。
代碼出錯了?我對xml/namespaces不太熟悉。
謝謝。
你的XPath有'NS:ABCCDE',而不是'NS:ABCDE'但這可能是造成問題的錯字。它在xmlnamespaces子句中也有一個尾隨逗號。爲什麼你期待'G1_val'而不是'GGGGG'下的所有三個節點?如果我用你的示例運行該查詢,我會得到'G1_valG2_valG3_val'和'...'。 –
@AlexPoole - 謝謝。那些是錯別字。我糾正了他們。正如你所說,是的,我應該得到G1_valG2_valG3_val,我錯了。但在我的情況下,我在運行查詢時沒有收到任何記錄 - 即使數據不正確。 – maverick