Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да изпусна списък с таблица от схема в Oracle?

Използвайте динамичен SQL, управляващ речника на данните.

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;

Добра идея е да бъдете точни с клаузата LIKE; използвайки escape ключова дума, за да се гарантира, че долните черти не се третират като заместващи знаци. Като алтернатива използвайте substr(table_name, 1, 7) = 'PREFIX_' .

Изтриването на грешна таблица не е бедствие, при условие че работите на 10g или по-нова версия и кошчето за РЕЦИКЛИРАНЕ е активирано , но все пак е по-добре да не го правите. Очевидно не бихте изпълнили код като този в Production, но бихте използвали принципа за генериране на скрипт от изявления за изпускане.

Горният код не обработва зависимости. Ако имате външни ключове, препращащи към таблиците с префикс и искате да принудите премахването на таблиците, използвайте тази допълнителна логика:

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

Това премахва ограниченията на външния ключ, но оставя (предишните) зависими таблици.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NHibernate 3.2 и Paging Oracle

  2. Как да извлечете група от регулярен израз в Oracle?

  3. Стойностите на Oracle Sequence не са подредени

  4. Импортиране на файлове в Oracle Apex с помощта на wwv_flow_files

  5. Как да проверя привилегиите (DDL,DML,DCL) на обекти, присвоени на схема, роли в базата данни на oracle?