XMLAGG выбрасывает ORA-1489 - не могу понять, почему
У меня есть требование объединить 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 ответ
Решение
Конкатенация выдает ошибку, если длина столбцов 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