Oracle
 sql >> Database >  >> RDS >> Oracle

Crea o sostituisci una tabella in Oracle pl/sql

Non dovresti davvero farlo in PL/SQL, le tabelle create in fase di esecuzione sarebbero indicative di un difetto nel tuo modello di dati. Se sei davvero convinto di doverlo fare, allora indaga su tabelle temporanee primo. Personalmente, valuterei nuovamente se è necessario.

Sembra che tu stia optando per EAFP invece di LBYL approccio, descritto in alcune risposte a questa domanda . Direi che questo non è necessario. Una tabella è una bestia abbastanza statica, puoi usare la vista di sistema TABELLE_UTENTE per determinare se esiste prima di eliminarlo.

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