Я выбираю записи из таблицы и возвращаю результаты в виде списка CSV из одной строки.
Я использую Oracle 10 release 2
. вот мой запрос:
SELECT column1,rtrim
(replace
(replace
(xmlagg(xmlelement("x", column2)).getclobval(),
'<x>',
NULL),
'</x>',
','),
',')
FROM table1
group by column1;
Моя проблема в том, что когда строка больше 4000 символов, она не работает из-за функции замены. Я могу обойти это, удалив функцию замены и используя функцию в моем языке программирования.
Я хотел бы изменить запрос, чтобы я мог указать, сколько элементов в списке CSV будет возвращено на строку. Так, например, использование вышеуказанного запроса вернет строку, содержащую 10000 элементов в списке CSV (исключая функцию замены).
Измененный запрос будет возвращать 10 строк по 1000 элементов (10 строк могут быть изменены).
например, оригинальный запрос вернет:
1234,1234,1234,1234,1234,5678,3456,12344,654677,
Исправленный запрос будет выглядеть примерно так:
1234,1234,1234,1234,
1234,5678,3456,12344,
654677
Я не могу использовать функцию collect
, но все остальное должно быть хорошо, просто SQL, если это возможно