sql >> Base de Datos >  >> RDS >> Oracle

Crear o reemplazar tabla en Oracle pl/sql

Realmente no debería estar haciendo esto en PL/SQL, las tablas creadas en tiempo de ejecución serían indicativas de una falla en su modelo de datos. Si está realmente convencido de que tiene que hacer esto absolutamente, investigue tablas temporales primero. Personalmente, volvería a evaluar si es necesario.

Parece que prefieres el EAFP en lugar de LBYL enfoque, que se describe en algunas respuestas a esta pregunta . Yo diría que esto es innecesario. Una tabla es una bestia bastante estática, puede usar la vista del sistema TABLAS_USUARIO para determinar si existe antes de soltarlo.

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