Кодът, който трябва да провери дали таблица съществува, показва лоша софтуерна архитектура. Не трябва да има нужда да създавате таблици в движение. Това е анти-модел (поне в Oracle). Въпреки това, виждаме вариации на този проблем достатъчно често, така че е очевидно, че този анти-модел процъфтява в дивата природа.
Ако наистина трябва да приложите такова решение (по каквато и да е причина), правилният подход е да отделите кода за изграждане на таблица от таблицата с помощта на код. Имайте отделни пакети за тях.
begin
pkg_ddl.build_table_xyz;
pkg_calc.run_xyz_job;
end;
Ако таблица XYZ не съществува pkg_calc.run_xyz_job()
е невалиден. Невалидността му обаче няма да попречи на pkg_ddl.build_table_xyz()
от изпълнение. След това, когато външната програма извика pkg_calc.run_xyz_job()
той ще компилира процедурата.