Не совсем то, что вы ищете, но все же интересно для Oracle.
WITH t AS
(SELECT 'one' column_one, 'two' column_two, 'three' column_three FROM dual)
SELECT XMLTYPE(EXTRACT(VALUE(T), '/*').GETSTRINGVAL()).GETROOTELEMENT() VALUE
FROM TABLE(XMLSEQUENCE(XMLTYPE((CURSOR (SELECT * FROM t))).EXTRACT('/ROWSET/ROW/*'))) T;
По сути, вы преобразовываете полученные столбцы в XML, а затем анализируете имена тегов; таким образом, этот образец даст вам следующий вывод.
VALUE
-----------
COLUMN_ONE
COLUMN_TWO
COLUMN_THREE
Если ваш исходный запрос возвращает более одной строки, то полученный выше результат будет умножен на количество строк.
Я полагаю, что вы можете использовать PIVOT
в 11g, чтобы преобразовать его обратно в один ряд, но у меня нет соответствующего экземпляра вручную, поэтому я не могу точно сказать.