データディクショナリを駆り立てる動的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以降および
上記のコードは依存関係を処理しません。プレフィックス付きのテーブルを参照する外部キーがあり、テーブルの削除を強制する場合は、次の追加ロジックを使用します。
execute immediate 'drop table '|| trec.table_name ||' cascade constraint';
これにより、外部キー制約は削除されますが、(以前の)依存テーブルは残ります。