Форматиране на изходен XML от XMLQuery() в Oracle

Използвам XMLQuery(), за да изпълня някои XQuery в моите таблици, които се състоят от записи с XML документи (XMLTYPE на Oracle). Заявката на 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.


person netcyrax    schedule 16.04.2014    source източник


Отговори (1)


Опитайте да използвате функцията 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

person GoranM    schedule 13.05.2014