Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Pomiń błędy ORA-00942 w skryptach tworzenia ddl

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przechwycić zdarzenie „następne”, gdy przesunięcie jest zmienne dla elementów, które można wielokrotnie przetwarzać?

  2. Nie można uruchomić dużego dynamicznego zapytania wybierającego w procedurze składowanej

  3. Funkcja podobna do UTL_MATCH do pracy z CLOB

  4. Jak poprawnie korzystać z Oracle ORDER BY i ROWNUM?

  5. Czy w Oracle można wstawić kolumnę do tabeli?