Idealmente, deberíamos mantener nuestro esquema correctamente, utilizando las mejores prácticas de gestión de configuración y control de código fuente. En este escenario, sabemos de antemano si el esquema contra el que ejecutamos nuestros scripts contiene esas tablas. No recibimos errores porque no intentamos descartar tablas que no existen.
Sin embargo, no siempre es posible hacer esto. Un enfoque alternativo es tener dos guiones. El primer script solo tiene las declaraciones DROP TABLE, precedidas por un amigable
PROMPT It is safe to ignore any ORA-00942 errors in the following statements
El segundo script tiene todas las instrucciones CREATE TABLE y comienza con
PROMPT All the statements in this script should succeed. So investigate any errors
Otra opción es usar el diccionario de datos:
begin
for r in ( select table_name from user_tables )
loop
execute immediate 'drop table '||r.table_name
||' cascade constraints';
end loop;
end;
Ten cuidado con éste. Es la opción nuclear y eliminará todas las tablas de su esquema.