Я думаю (но был бы рад, если бы вы ошиблись), что вы должны знать хотя бы количество столбцов в таблице, но тогда вы можете сделать:
select max(c1),max(c2),max(c3),max(c4),max(c5)
from (
select 1 c1, 1 c2, 1 c3, 1 c4, 1 c5 from dual where 0
union all
select * from arbitrary5columntable
) foo;
Очевидно, что вы теряете все преимущества индексирования.