Oracle
 sql >> Base de données >  >> RDS >> Oracle

Créer ou remplacer une table dans Oracle pl/sql

Vous ne devriez vraiment pas faire cela en PL/SQL, les tables créées au moment de l'exécution indiqueraient une faille dans votre modèle de données. Si vous êtes vraiment convaincu que vous devez absolument le faire, alors enquêtez sur tableaux temporaires première. Personnellement, je réévaluerais si c'est vraiment nécessaire.

Vous semblez opter pour le EAFP par opposition à LBYL approche, qui est décrite dans quelques réponses à cette question . Je dirais que ce n'est pas nécessaire. Une table est une bête assez statique, vous pouvez utiliser la vue système USER_TABLES pour déterminer s'il existe avant de le supprimer.

declare

   l_ct number;

begin

   -- Determine if the table exists.
   select count(*) into l_ct
     from user_tables
    where table_name = 'THE_TABLE';

   -- Drop the table if it exists.
   if l_ct = 1 then
      execute immediate 'drop table the_table';
   end if;

   -- Create the new table it either didn-t exist or
   -- has been dropped so any exceptions are exceptional.
   execute immediate 'create table the_table ( ... )';

end;
/