Вы ищете динамо c SQL. Идея состоит в том, чтобы сгенерировать строку запроса из результатов запроса SQL. Затем вы можете запустить его с помощью execute immediate
.
. В вашем случае это будет выглядеть так:
declare
p_sql varchar2(100);
begin
select
'select '
|| listagg('a1.' || colnames, ', ') within group(order by colnames)
|| ' from table2 a1'
into p_sql
from table1;
dbms_output.put_line('sql: ' || p_sql); -- debug
execute immediate p_sql; -- execute
end;
/
Для ваших данных выборки: , это генерирует :
dbms_output:
sql: select a1.col1, a1.col2, a1.col3, a1.col4 from table2 a1