Да, используйте PL / SQL для построения динамического запроса, а затем используйте EXECUTE IMMEDIATE
:
Oracle Setup :
CREATE TABLE TableA ( column1 ) AS
SELECT 'A' FROM DUAL UNION ALL
SELECT 'B' FROM DUAL UNION ALL
SELECT 'C' FROM DUAL UNION ALL
SELECT 'D' FROM DUAL;
PL /SQL :
DECLARE
p_sql VARCHAR2(4000);
BEGIN
SELECT 'CREATE TABLE TableB ('
|| LISTAGG(
column1 || ' NUMBER',
','
) WITHIN GROUP ( ORDER BY ROWNUM )
|| ')'
INTO p_sql
FROM TableA;
EXECUTE IMMEDIATE p_sql;
END;
/
Вывод :
SELECT * FROM TableB;
A | B | C | D
-: | -: | -: | -:
db <> скрипка здесь