Bạn thực sự không nên làm điều này trong PL / SQL, các bảng được tạo trong thời gian chạy sẽ là dấu hiệu của một lỗ hổng trong mô hình dữ liệu của bạn. Nếu bạn thực sự thuyết phục rằng bạn nhất thiết phải làm điều này thì hãy điều tra bảng tạm thời Đầu tiên. Cá nhân tôi đánh giá lại xem nó có cần thiết không.
Có vẻ như bạn sẽ tham gia EAFP thay vì LBYL cách tiếp cận, được mô tả trong một vài câu trả lời cho câu hỏi này . Tôi cho rằng điều này là không cần thiết. Bảng là một con thú khá tĩnh, bạn có thể sử dụng chế độ xem hệ thống USER_TABLES để xác định xem nó có tồn tại hay không trước khi loại bỏ nó.
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;
/