Функция Листагга и ORA-01489: результат конкатенации строк слишком длинный

Когда я запускаю следующий запрос:

 Select
  tm.product_id,
  listagg(tm.book_id || '(' || tm.score || ')',',')
    within group (order by tm.product_id) as matches
from
  tl_product_match tm 
where
  tm.book_id is not null 
group by
  tm.product_id

Oracle возвращает следующую ошибку:

 ORA-01489: result of string concatenation is too long

Я знаю, что причина этого заключается в том, что функция listagg пытается объединить значения, превышающие 4000 символов, что не поддерживается.

Я видел альтернативный пример, описанный здесь -http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php но все они требуют использования функций или процедур.

Есть ли решение, которое представляет собой чистый SQL без необходимости вызова функции или хранимой процедуры и возможности прочитать значение с использованием стандартного JDBC?

Другая сложность, с которой я столкнулся, состоит в том, что большинство примеров агрегации строк, которые я видел, показывают примеры того, как читать значение как есть. В моем примере о том, что я изменяю значение первым (т.е. я собираю два столбца).

Ответы на вопрос(3)

Ваш ответ на вопрос