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

Suprimir erros ORA-00942 em scripts de criação ddl


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.