Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criar ou substituir tabela no Oracle pl/sql


Você realmente não deveria estar fazendo isso em PL/SQL, tabelas criadas em tempo de execução seriam indicativas de uma falha em seu modelo de dados. Se você está realmente convencido de que precisa fazer isso, investigue tabelas temporárias primeiro. Pessoalmente, eu reavaliaria se é necessário.

Você parece estar indo para o EAFP em oposição ao LBYL abordagem, que é descrita em algumas respostas para esta pergunta . Eu diria que isso é desnecessário. Uma tabela é uma fera bastante estática, você pode usar a visão do sistema USER_TABLES para determinar se ele existe antes de eliminá-lo.
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;
/