Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Tabelle in Oracle pl/sql erstellen oder ersetzen

Sie sollten dies wirklich nicht in PL/SQL tun, da zur Laufzeit erstellte Tabellen auf einen Fehler in Ihrem Datenmodell hinweisen würden. Wenn Sie wirklich davon überzeugt sind, dass Sie dies unbedingt tun müssen, untersuchen Sie temporäre Tabellen Erste. Ob es überhaupt notwendig ist, würde ich persönlich noch einmal prüfen.

Sie scheinen sich für das EAFP im Gegensatz zu LBYL zu entscheiden Ansatz, der in einigen Antworten auf diese Frage beschrieben wird . Ich würde behaupten, dass dies unnötig ist. Eine Tabelle ist ein ziemlich statisches Tier, Sie können die Systemansicht verwenden USER_TABLES um festzustellen, ob es existiert, bevor es gelöscht wird.

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;
/