Je zou dit echt niet moeten doen in PL/SQL, tabellen die tijdens runtime zijn gemaakt, zouden wijzen op een fout in je gegevensmodel. Als je er echt van overtuigd bent dat je dit absoluut moet doen, onderzoek dan tijdelijke tabellen eerst. Persoonlijk zou ik opnieuw beoordelen of het überhaupt nodig is.
Je lijkt te gaan voor de EAFP in tegenstelling tot LBYL aanpak, die wordt beschreven in een paar antwoorden op deze vraag . Ik zou zeggen dat dit niet nodig is. Een tafel is een vrij statisch beest, je kunt de systeemweergave gebruiken USER_TABLES om te bepalen of het bestaat voordat u het verwijdert.
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;
/