Not sure if this is efficient.
declare
l_org_table_name varchar2(128) := 'My_Org_table';
l_copy_table_name varchar2(128) := 'My_Copy_table';
l_sql varchar2(4000) := null;
begin
l_sql := 'create table ' || l_copy_table_name ||
' as select * from ' || l_org_table_name || ' where 1=2';
execute immediate l_sql;
--- do all your processing here
. . .
l_sql := 'drop table '||l_copy_table_name;
execute immediate l_sql;
end;
/