У меня есть запрос, который использует функцию listagg
для получения всех строк в виде строки с разделителями-запятыми, которая в конечном итоге будет отправлена в большое текстовое поле. Я получаю следующее исключение:
ORA-01489: result of string concatenation is too long
Я знаю, что проблема в том, что запрос, выполняемый для агрегирования данных, возвращает так много строк, что конкатенация строк, которую выполняет listagg
, нарушает ограничение в 4000 символов. Однако для моего варианта использования вполне приемлемо урезать до первых 4000 символов.
Как изменить этот пример запроса из здесь, чтобы ограничить столбец "значение" значением быть не более 4000 символов?
SELECT LISTAGG(product_name, ', ') WITHIN
GROUP(
ORDER BY product_name DESC) "Product_Listing"
FROM products
Вы не можете обернуть substr
вокруг вызова listagg' because
listaggthrows the exception before
substr`, когда-либо вызываемого.
Я видел много вопросов на SO о том, как обойти ограничение в 4000 символов, но не ограничивать результирующее значение.