Naprawdę nie powinieneś tego robić w PL/SQL, tabele utworzone w czasie wykonywania mogą wskazywać na błąd w Twoim modelu danych. Jeśli naprawdę jesteś przekonany, że absolutnie musisz to zrobić, zbadaj tabele tymczasowe pierwszy. Osobiście oceniłbym ponownie, czy w ogóle jest to konieczne.
Wygląda na to, że wybierasz EAFP zamiast LBYL podejście, które jest opisane w kilku odpowiedziach na to pytanie . Twierdzę, że to niepotrzebne. Stół to dość statyczna bestia, możesz użyć widoku systemowego TABELI_UŻYTKOWNIKÓW aby ustalić, czy istnieje, zanim go porzucisz.
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;
/