Idealerweise sollten wir unser Schema ordnungsgemäß pflegen, indem wir Best Practices für die Quellcodeverwaltung und das Konfigurationsmanagement verwenden. In diesem Szenario wissen wir im Voraus, ob das Schema, für das wir unsere Skripte ausführen, diese Tabellen enthält. Wir erhalten keine Fehler, weil wir nicht versuchen, Tabellen zu löschen, die nicht existieren.
Dies ist jedoch nicht immer möglich. Ein alternativer Ansatz besteht darin, zwei Skripte zu haben. Das erste Skript enthält nur die DROP TABLE-Anweisungen, denen ein freundliches
vorangestellt istPROMPT It is safe to ignore any ORA-00942 errors in the following statements
Das zweite Skript enthält alle CREATE TABLE-Anweisungen und beginnt mit
PROMPT All the statements in this script should succeed. So investigate any errors
Eine weitere Option ist die Verwendung des Datenwörterbuchs:
begin
for r in ( select table_name from user_tables )
loop
execute immediate 'drop table '||r.table_name
||' cascade constraints';
end loop;
end;
Seien Sie vorsichtig mit diesem. Es ist die nukleare Option und wird jede Tabelle in Ihrem Schema löschen.