Jag tror att det bästa du enkelt kan göra med vanlig SQL är att köra en fråga som denna för att skapa den fråga du vill ha, och sedan köra den.
select 'select count(distinct '
|| listagg(column_name || ') as ' || column_name, ', count(distinct ') within group (order by column_id)
|| ' from ' || max(table_name) || ';' as script
from all_tab_cols
where table_name = 'MYTABLE';