Форматирование выходного 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! Я заметил, что если у меня есть запрос, в котором не используются отдельные значения(), результаты отображаются правильно.

Кто-нибудь сталкивался с такой же проблемой и нашел решение/обходной путь? Я на 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