2017-09-14 167 views
0

我需要從保存在Oracle 12c表中的CLOB類型列中的XML代碼中提取一些標記值。我們使用xmltype(COLUMN).extract('XPath/text()')。getStringVal()從標籤提取數據,但在我們的數據庫升級到12c後它不工作。Oracle 12c:從XML(CLOB類型)提取數據(選擇)

我們有XML一樣:

<otm:ShipmentStatus 
xmlns:gtm="http://xmlns.oracle.com/apps/gtm/transmission/v6.4" 
xmlns:otm="http://xmlns.oracle.com/apps/otm/transmission/v6.4"> 
<otm:ServiceProviderAlias> 
<otm:ServiceProviderAliasQualifierGid> 
<otm:Gid> 
<otm:Xid>GLOG</otm:Xid> 
</otm:Gid> 
</otm:ServiceProviderAliasQualifierGid> 
<otm:ServiceProviderAliasValue>TEST.123</otm:ServiceProviderAliasValue> 
</otm:ServiceProviderAlias> 
<otm:IntSavedQuery> 
<otm:IntSavedQueryGid> 
<otm:Gid> 
<otm:DomainName>TEST</otm:DomainName> 
<otm:Xid>FIND_DELIVERY_NUMBER</otm:Xid> 
</otm:Gid>......etc. 

從這個XML,我們必須選擇一些值。

請建議一些方法來解決這個問題。隨意問你是否需要更多。

謝謝。 薩蒂揚

+0

https://docs.oracle.com/database/121/SQLRF/functions068.htm#SQLRF00640 – Rene

+0

你要提取 「**一些值**」?如果你的商業客戶在你提出的**請求中找到**,你會怎麼做? – mathguy

回答

0

示例xml具有名稱空間。你必須使用它。

xmltype.extract('/otm:ShipmentStatus', 'xmlns:gtm="http://xmlns.oracle.com/apps/gtm/transmission/v6.4" 
xmlns:otm="http://xmlns.oracle.com/apps/otm/transmission/v6.4"') extacting node from specify namespace 

xmltype.extract('/*:ShipmentStatus') extractin node from any namespace 
相關問題