Il codice che deve verificare se esiste una tabella indica un'architettura software errata. Non dovrebbe essere necessario creare tabelle al volo. È un anti-pattern (almeno in Oracle). Tuttavia, vediamo abbastanza spesso variazioni su questo problema, quindi è ovvio che questo anti-modello sta prosperando in natura.
Se è davvero necessario implementare una soluzione del genere (per qualsiasi motivo), l'approccio corretto consiste nel separare il codice di costruzione della tabella dalla tabella utilizzando il codice. Avere pacchetti separati per loro.
begin
pkg_ddl.build_table_xyz;
pkg_calc.run_xyz_job;
end;
Se la tabella XYZ non esiste pkg_calc.run_xyz_job()
è invalido. Tuttavia la sua invalidità non impedirà pkg_ddl.build_table_xyz()
dall'esecuzione. Quindi, quando il programma esterno chiama pkg_calc.run_xyz_job()
compilerà la procedura.