Le code qui doit vérifier si une table existe indique une mauvaise architecture logicielle. Il ne devrait pas être nécessaire de créer des tables à la volée. C'est un anti-modèle (au moins dans Oracle). Cependant, nous voyons assez souvent des variations sur ce problème, il est donc évident que cet anti-modèle prospère dans la nature.
Si vous avez vraiment besoin d'implémenter une telle solution (pour quelque raison que ce soit), l'approche correcte consiste à séparer le code de construction de table de la table à l'aide de code. Ayez des packages séparés pour eux.
begin
pkg_ddl.build_table_xyz;
pkg_calc.run_xyz_job;
end;
Si la table XYZ n'existe pas pkg_calc.run_xyz_job()
est invalide. Cependant, son invalidité n'empêchera pas pkg_ddl.build_table_xyz()
de l'exécution. Ensuite, lorsque le programme externe appelle pkg_calc.run_xyz_job()
il compilera la procédure.