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