Gunakan SQL dinamis untuk keluar dari kamus data.
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;
Sebaiknya tepat dengan klausa LIKE; menggunakan escape
kata kunci untuk memastikan garis bawah tidak diperlakukan sebagai karakter pengganti. Atau gunakan substr(table_name, 1, 7) = 'PREFIX_'
.
Menjatuhkan tabel yang salah bukanlah bencana asalkan Anda bekerja pada 10g atau lebih baru dan RECYCLE BIN diaktifkan , tapi tetap lebih baik tidak. Jelas Anda tidak akan menjalankan kode seperti ini di Produksi, tetapi Anda akan menggunakan prinsip untuk menghasilkan skrip pernyataan drop.
Kode di atas tidak menangani dependensi. Jika Anda memiliki kunci asing yang mereferensikan tabel awalan dan Anda ingin memaksa menjatuhkan tabel, gunakan logika tambahan ini:
execute immediate 'drop table '|| trec.table_name ||' cascade constraint';
Ini menghilangkan batasan kunci asing tetapi meninggalkan tabel dependen (sebelumnya).