2013-08-03 8 views

Antwort

19

Sie können ein Skript schreiben, insbesondere Schleife, in der Sie Tabellenname aus user_tables auswählen und diese Schleife durchlaufen, und verwenden Sie den Befehl "execute sofort", um sie zu löschen.

Aber ich würde dies vorschlagen - in SQL-Tool tun

select 'drop table ' || table_name || ';' from user_tables where table_name like 'TBL_%' 

Dann Sie die Ausgabe dieser Abfrage kopieren und in Ihr SQL-Editor einfügen, und auszuführen. Denken Sie daran, wenn sql + Ihr Editor ist, wenn Sie sie alle einfügen, werden sie ausgeführt werden. Möglicherweise möchten Sie Notepad verwenden, um es zuerst zu überprüfen und zu bearbeiten.

Aber Sie können nicht einfach mehr als eine Tabelle in einem einzigen Befehl löschen. diesen Link für andere Optionen mit drop table http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9003.htm

7
BEGIN 

    --Bye Tables! 
    FOR i IN (SELECT ut.table_name 
       FROM USER_TABLES ut) LOOP 
    EXECUTE IMMEDIATE 'drop table '|| i.table_name ||' CASCADE CONSTRAINTS '; 
    END LOOP; 

END; 
+0

zugeordnet Überprüfen beschrieben ich diese Technik in meiner ursprünglichen Antwort> 3 Jahre. Und ich wies darauf hin, dass es manchmal gefährlich sein kann, wenn man mit Daten arbeitet http://stackoverflow.com/a/18030453/1704458 –

+0

Das bekommt einen Downvote, weil der User * speziell nach * nur Tabellen fragt, die mit "TBL_" beginnen - das würde alles löschen! – theMayer