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

Jak usunąć listę tabeli ze schematu w Oracle?

Użyj dynamicznego SQL wyłączania słownika danych.

begin
     for trec in ( select table_name
                   from user_tables
                   where table_name like 'PREFIX\_%' escape `\' )
     loop
         dbms_output.put_line('dropping table ' || trec.table_name);
         execute immediate 'drop table '||trec.table_name;
     end loop;
end;

Dobrym pomysłem jest precyzyjne określenie klauzuli LIKE; używając escape słowo kluczowe, aby podkreślenia nie były traktowane jako symbole wieloznaczne. Alternatywnie użyj substr(table_name, 1, 7) = 'PREFIX_' .

Upuszczenie niewłaściwej tabeli nie jest katastrofą, pod warunkiem, że pracujesz na 10g lub nowszym i POJEMNIK NA RECYKLING jest włączony , ale lepiej tego nie robić. Oczywiście nie uruchamiałbyś takiego kodu w środowisku produkcyjnym, ale wykorzystałbyś tę zasadę do wygenerowania skryptu instrukcji drop.

Powyższy kod nie obsługuje zależności. Jeśli masz klucze obce odwołujące się do tabel z prefiksami i chcesz wymusić usunięcie tabel, użyj tej dodatkowej logiki:

     execute immediate 'drop table '|| trec.table_name ||' cascade constraint';

Powoduje to usunięcie ograniczeń kluczy obcych, ale pozostawia (wcześniej) zależne tabele.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie usuwania nie działa z aplikacji Java

  2. Jak sprawdzić wersję dostawcy Oracle dla ole-db. Dostawca OraOLEDB.Oracle

  3. Jak przejść przez rozdzieloną listę w Oracle PLSQL?

  4. Rozwiąż funkcje matematyczne PL/SQL

  5. Zadeklaruj dynamiczną tablicę w Oracle PL/SQL