Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00942-Fehler in ddl-Erstellungsskripten unterdrücken

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 ist
PROMPT  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.