Idéalement, nous devrions maintenir notre schéma correctement, en utilisant les meilleures pratiques de contrôle des sources et de gestion de la configuration. Dans ce scénario, nous savons à l'avance si le schéma sur lequel nous exécutons nos scripts contient ces tables. Nous n'obtenons pas d'erreurs car nous n'essayons pas de supprimer des tables qui n'existent pas.
Cependant, il n'est pas toujours possible de le faire. Une autre approche consiste à avoir deux scripts. Le premier script a juste les instructions DROP TABLE, précédées d'un amical
PROMPT It is safe to ignore any ORA-00942 errors in the following statements
Le deuxième script contient toutes les instructions CREATE TABLE et commence par
PROMPT All the statements in this script should succeed. So investigate any errors
Une autre option consiste à utiliser le dictionnaire de données :
begin
for r in ( select table_name from user_tables )
loop
execute immediate 'drop table '||r.table_name
||' cascade constraints';
end loop;
end;
Soyez prudent avec celui-ci. C'est l'option nucléaire et supprimera toutes les tables de votre schéma.