假设ADO_DATA
是XMLType的类型,你的当前查询因为您的valueXML
节点具有您需要包含在XPath中的名称空间,或者使用通配符,所以不会返回任何值:
SELECT EXTRACTVALUE (IT.ADO_DATA, '/*:valueXML/*:IndividualADO/*:ado-name') "REFERENCE"
FROM ITEM_ADO IT;
REFERENCE
--------------------------------------------------------------------------------
LIMS
但extractvalue()
被去除;你可以做同样的an XQuery:
select xmlquery(
'/*:valueXML/*:IndividualADO/*:ado-name/text()'
passing ado_data
returning content) as reference
from item_ado;
REFERENCE
--------------------------------------------------------------------------------
LIMS
还是用默认的命名空间而不是通配符(和显示CTE用于测试):
with item_ado (ado_data) as (
select xmltype('<valueXML xmlns="com.ado" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<IndividualADO>
<ado-name>LIMS</ado-name>
<field>
<ado-field-name>ADO_LIMS_LIMS_Custodian_First_Name</ado-field-name>
<ado-field-value xsi:nil="true"/>
</field>
</IndividualADO>
</valueXML>') from dual
)
select xmlquery(
'declare default element namespace "com.ado"; (: :)
/valueXML/IndividualADO/ado-name/text()'
passing ado_data
returning content) as reference
from item_ado;
REFERENCE
--------------------------------------------------------------------------------
LIMS
会发生什么事,当您运行查询?你有错误,或只是没有你期望的结果?什么数据类型是ASO_DATA列? –
当我执行上面的查询和ADO_DATA的数据类型是XML TYPE – girish