XMLAGG выбрасывает ORA-1489 - не могу понять, почему - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть требование объединить 3 столбца из таблицы, разделенных точками с запятой. После исследования я решил использовать xmlagg и getclobval () - он работал нормально до начала этой недели, когда он начал выдавать ORA-1489 - результат объединения строк слишком длинный. Я специально использовал xmlagg и getclobval (), чтобы избежать этого. В настоящее время я все еще пытаюсь выследить оскорбительный ряд, но я был бы признателен, если бы кто-то убедился, что мой код исправен. Спасибо!

select id, 
   rtrim(extract(xmlagg(xmlelement(e, col1 || ';  ' || col2 || ';  ' || col3 || '; ')), 
           '/E/text()').getclobval(), chr(13)) AS concat_field from schema.table group by id

1 Ответ

0 голосов
/ 08 ноября 2018

Конкатенация выдает ошибку, если длина разделителей col1 + col2 + col3 +> 4000. col1 || '; ' || col2 || '; ' || col3 || '; '
Решение: to_clob

select id, 
   rtrim(extract(xmlagg(xmlelement(e, to_clob(col1) || ';  ' || col2 || ';  ' || col3 || '; ')), 
           '/E/text()').getclobval(), chr(13)) AS concat_field from schema.table group by id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...