sql >> Databáze >  >> RDS >> Oracle

Jak vypustit seznam tabulky ze schématu v Oracle?

Použijte dynamické SQL řízení mimo datový slovník.

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;

Je dobré být přesný s klauzulí LIKE; pomocí escape klíčové slovo, abyste zajistili, že podtržítka nebudou považována za zástupné znaky. Případně použijte substr(table_name, 1, 7) = 'PREFIX_' .

Zahození špatné tabulky není katastrofou za předpokladu, že pracujete na 10g nebo novějším a RECYCLE BIN je aktivován , ale stejně je lepší ne. Je zřejmé, že byste takto nespouštěli kód v Production, ale použili byste tento princip ke generování skriptu příkazů drop.

Výše uvedený kód nezpracovává závislosti. Pokud máte cizí klíče odkazující na tabulky s předponou a chcete vynutit odstranění tabulek, použijte tuto další logiku:

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

Tím se zruší omezení cizího klíče, ale zůstanou (dříve) závislé tabulky.



  1. Nativní dotaz JPA na pole LONGTEXT v zobrazení MySQL vede k chybě

  2. Funkce prostorového bodu pomocí Laravel Eloquent ORM

  3. Základy tabulkových výrazů, 4. část – Odvozené tabulky, optimalizační úvahy, pokračování

  4. SQLAlchemy pořadí podle výsledku funkce