2017-09-14 40 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 
相关问题