Función de listagg y ORA-01489: el resultado de la concatenación de cadenas es demasiado largo

Cuando ejecuto la siguiente consulta:

 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 devuelve el siguiente error:

 ORA-01489: result of string concatenation is too long

Sé que la razón por la que está fallando es que la función listagg está tratando de concatenar los valores que son más de 4000 caracteres que no son compatibles.

He visto el ejemplo alternativo descrito aquí -http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php pero todos requieren el uso de funciones o procedimientos.

¿Existe una solución que sea SQL puro sin tener que llamar a una función o un procedimiento almacenado y poder leer el valor utilizando el JDBC estándar?

La otra dificultad que tengo es que la mayoría de los ejemplos de agregación de cadenas que he visto muestra ejemplos de cómo leer el valor tal como está. En mi ejemplo, estoy modificando el valor primero (es decir, estoy agregando dos columnas).

Respuestas a la pregunta(3)

Su respuesta a la pregunta