PL / SQLでこれを行うべきではありません。実行時に作成されたテーブルは、データモデルの欠陥を示しています。絶対にこれを行う必要があると本当に確信している場合は、一時テーブル 最初。個人的には、それが必要かどうかを再評価したいと思います。
LBYLではなくEAFP
を選択しているようです。 この質問
に対するいくつかの回答で説明されているアプローチ 。これは不要だと思います。テーブルはかなり静的な獣です。システムビュー
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;
/