在Oracle中格式化XMLQuery()中的输出XML

时间:2014-04-16 02:42:34

标签: xml oracle xquery formatting

我正在使用XMLQuery()在我的表中执行一些XQuery,这些XQuery包含带有XML文档的记录(Oracle的XMLTYPE)。 Oracle查询如下所示:

SELECT XMLQuery(
'for $b in distinct-values($rdoc//book_title)
 let $r := $rdoc//review[book_title=$b]/rating
 order by avg($r) descending
 return 
  <book>
    <title>{data($b)}</title>
    <avgrating>{avg($r)}</avgrating>
  </book>'
passing b.data as "bdoc", r.data as "rdoc"
RETURNING CONTENT).getStringVal() XMLData
FROM books b, reviews r

我得到了正确的结果,但SQLDeveloper只在一行中显示结果,而不是格式化为XML!我注意到如果我有一个不使用distinct-values()的查询,那么结果会正确显示。

是否有人遇到过同样的问题并找到解决方案/解决方法?我在Oracle 12c上。

1 个答案:

答案 0 :(得分:0)

尝试使用XMLSerialize函数:

SELECT
  XMLSerialize(content XMLQuery(...your expression...) indent size=2) XMLData
FROM
  books b, reviews r

为了确定您在做什么,请阅读:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions252.htm#SQLRF06231