Я использую 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 способ ..