Конкатенация произвольных полей с использованием XML в Oracle - PullRequest
0 голосов
/ 10 ноября 2011

Я использую Oracle 10gR2 здесь.

Я хочу иметь возможность создать select * from TABLE и получить вывод в одну строку со всеми столбцами, объединенными разделителем.

Согласно тому, что я нашел, обработка XML, кажется, лучший способ сделать это.Итак, у меня есть этот запрос:

select dbms_xmlgen.getxml('select * from MY_TABLE') from dual;

, который будет возвращать код XML.Теперь мне нужно обработать этот XML в окончательные записи.Пример может помочь:

Обычный запрос:

select * form MY_TABLE

вернет:

Col1   | Col2   | Col3
a      | b      | c
z      | x      | y

А теперь я хочу сделать запрос, подобный

select somesxmlprocessing(dbms_xmlgen.getxml('select * from MY_TABLE'), ',') as rows
from dual

Результат теперь будет:

rows
a,b,c
z,x,y

Хитрость в том, что я не могу заранее знать, какие столбцы имеет таблица.то есть это всегда будет select * from независимо от того, сколько полей имеет таблицу.

ps: я нашел решение, использующее функции агрегирования данных в all_tab_columns, какой тип работы.Раздражает то, что он выполняется в два этапа: сначала создать выбор, а затем выполнить его.работает, но я все еще хотел бы знать, как один выстрел XML способ ..

1 Ответ

0 голосов
/ 11 ноября 2011

Мне не известны какие-либо функции сборки, которые позволили бы вам сделать это (звучит так, как будто вы действительно хотите экспортировать таблицу в формате CSV?, В этом случае для этого есть различные инструменты).Вам нужно написать функцию, чтобы делать то, что вы хотите, что не должно быть слишком сложным.Наверное, стоит посмотреть через это , спросить у Тома , поможет ли оно вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...