[英]SUM and COUNT xPath expression doesn't work in Oracle 11.2
我在运行包含SUM
和COUNT
函数的Oracle(11g R2)中的一些-非常简单-xPath查询时遇到问题。 例如:
select extractvalue(
xmltype.createxml('<a>
<b>
<c>1</c>
<d>XXX</d>
</b>
<b>
<c>2</c>
<d>YYY</d>
</b>
</a>')
, 'sum(/a/b/c)'
)
from dual;
count
相同:
select extractvalue(
xmltype.createxml('<a>
<b>
<c>1</c>
<d>XXX</d>
</b>
<b>
<c>2</c>
<d>YYY</d>
</b>
</a>')
, 'count(/a/b/c)'
)
from dual;
我得到ORA-31012
的回应。 任何想法如何使其工作? 还是可能的解决方法?
我不记得我上次使用extractvalue
是因为它在11g中被弃用。 相反,我使用xmlquery
:
这是一个简单的示例,如何进行count
和sum
:
with
xmldata as (
select xmltype('<a><b><c>1</c><d>TEXT1</d></b><b><c>2</c><d>TEXT2</d></b></a>') as data_ from dual
)
select 'COUNT', xmlquery('
count($doc/a/b/c)
' passing data_ as "doc" returning content) as result_
from xmldata
union all
select 'SUM', xmlquery('
sum($doc/a/b/c)
' passing data_ as "doc" returning content) as result_
from xmldata
;
希望这可以帮助 !
我尝试了@ user272735的答案,而没有将其as "doc"
并删除$doc
,它的工作原理相同:
with
xmldata as (
select xmltype('<a><b><c>1</c><d>TEXT1</d></b><b><c>2</c><d>TEXT2</d></b></a>') as data_ from dual
)
select 'COUNT', xmlquery('
count(/a/b/c)
' passing data_ returning content) a as s result_
from xmldata
union all
select 'SUM', xmlquery('
sum(/a/b/c)
' passing data_ returning content) as result_
from xmldata
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.