Существует несколько способов запуска динамического SQL в SQL.В 18c мы можем использовать полиморфную табличную функцию.Если все в порядке, чтобы получить результаты в виде XML, мы можем использовать DBMS_XMLGEN.getXML
.Если мы можем создавать собственные объекты PL / SQL, мы можем использовать картридж данных Oracle для создания решения Method4 .
Например, после установки Method4 мы можем запустить SQL следующим образом:
select * from table(method4.dynamic_query(
'
select query
from master_table
where rec_id = 1
'
));
Приведенный выше код будет работать с приведенной ниже примерной схемой:
create table master_table as
select 1 rec_id, 'SELECT * from EMP' query from dual union all
select 2 rec_id, 'SELECT * FROM DEPT' query from dual;
create table emp(emp_name varchar2(100));
create table dept(dept_name varchar2(100));
Предыдущая информация буквально отвечает на ваш вопрос.Но я согласен с Марком Д. Пауэллом в том, что этот дизайн часто является плохой идеей, и мы должны создавать такой код только после того, как оценим альтернативные проекты.