Idealmente, devemos manter nosso esquema adequadamente, usando as práticas recomendadas de controle de origem e gerenciamento de configuração. Nesse cenário, sabemos de antemão se o esquema em que executamos nossos scripts contém essas tabelas. Não recebemos erros porque não tentamos eliminar tabelas que não existem.
No entanto, nem sempre é possível fazer isso. Uma abordagem alternativa é ter dois scripts. O primeiro script tem apenas as instruções DROP TABLE, precedidas por um amigável
PROMPT It is safe to ignore any ORA-00942 errors in the following statements
O segundo script tem todas as instruções CREATE TABLE e inicia com
PROMPT All the statements in this script should succeed. So investigate any errors
Outra opção é usar o dicionário de dados:
begin
for r in ( select table_name from user_tables )
loop
execute immediate 'drop table '||r.table_name
||' cascade constraints';
end loop;
end;
Tenha cuidado com este. É a opção nuclear e descartará todas as tabelas do seu esquema.