W idealnym przypadku powinniśmy prawidłowo utrzymywać nasz schemat, korzystając z najlepszych praktyk dotyczących kontroli źródła i zarządzania konfiguracją. W tym scenariuszu wiemy z góry, czy schemat, na którym uruchamiamy nasze skrypty, zawiera te tabele. Nie otrzymujemy błędów, ponieważ nie próbujemy usuwać tabel, które nie istnieją.
Jednak nie zawsze jest to możliwe. Alternatywnym podejściem jest posiadanie dwóch skryptów. Pierwszy skrypt zawiera tylko instrukcje DROP TABLE, poprzedzone przyjaznym
PROMPT It is safe to ignore any ORA-00942 errors in the following statements
Drugi skrypt zawiera wszystkie instrukcje CREATE TABLE i rozpoczyna się od
PROMPT All the statements in this script should succeed. So investigate any errors
Inną opcją jest użycie słownika danych:
begin
for r in ( select table_name from user_tables )
loop
execute immediate 'drop table '||r.table_name
||' cascade constraints';
end loop;
end;
Bądź ostrożny z tym. Jest to opcja nuklearna i usunie każdą tabelę w twoim schemacie.