Anda seharusnya tidak melakukan ini di PL/SQL, tabel yang dibuat saat runtime akan menunjukkan cacat pada model data Anda. Jika Anda benar-benar yakin bahwa Anda benar-benar harus melakukan ini, selidiki tabel sementara pertama. Secara pribadi, saya akan menilai kembali apakah itu perlu.
Anda tampaknya memilih EAFP sebagai lawan dari LBYL pendekatan, yang dijelaskan dalam beberapa jawaban untuk pertanyaan ini . Saya berpendapat bahwa ini tidak perlu. Tabel adalah binatang yang cukup statis, Anda dapat menggunakan tampilan sistem USER_TABLES untuk menentukan apakah itu ada sebelum menjatuhkannya.
declare
l_ct number;
begin
-- Determine if the table exists.
select count(*) into l_ct
from user_tables
where table_name = 'THE_TABLE';
-- Drop the table if it exists.
if l_ct = 1 then
execute immediate 'drop table the_table';
end if;
-- Create the new table it either didn-t exist or
-- has been dropped so any exceptions are exceptional.
execute immediate 'create table the_table ( ... )';
end;
/