Idealiter zouden we ons schema goed moeten onderhouden, met behulp van best practices voor bronbeheer en configuratiebeheer. In dit scenario weten we van tevoren of het schema waarop we onze scripts uitvoeren die tabellen bevat. We krijgen geen fouten omdat we niet proberen tabellen te verwijderen die niet bestaan.
Het is echter niet altijd mogelijk om dit te doen. Een alternatieve benadering is om twee scripts te hebben. Het eerste script heeft alleen de DROP TABLE-instructies, voorafgegaan door een vriendelijke
PROMPT It is safe to ignore any ORA-00942 errors in the following statements
Het tweede script heeft alle CREATE TABLE-instructies en begint met
PROMPT All the statements in this script should succeed. So investigate any errors
Een andere optie is om de datadictionary te gebruiken:
begin
for r in ( select table_name from user_tables )
loop
execute immediate 'drop table '||r.table_name
||' cascade constraints';
end loop;
end;
Wees voorzichtig met deze. Het is de nucleaire optie en zal elke tabel in je schema laten vallen.