gpt4 book ai didi

sql - 在 Oracle pl/sql 中创建或替换表

转载 作者:太空狗 更新时间:2023-10-30 01:58:47 24 4
gpt4 key购买 nike

我需要一个脚本来创建表,或者如果它已经存在则删除它,然后重新创建表。经过一些研究,我发现 pl/sql 中的 CREATE OR REPLACE TABLE 不存在。所以我想出了这个脚本:

DECLARE
does_not_exist EXCEPTION;
PRAGMA EXCEPTION_INIT (does_not_exist, -942);
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE foobar';
EXCEPTION
WHEN does_not_exist
THEN
NULL;
END;
/

CREATE TABLE foobar (c1 INT);

有什么合适的方法可以实现这个功能吗?

最佳答案

您真的不应该在 PL/SQL 中这样做,在运行时创建的表将表明您的数据模型存在缺陷。如果您真的确信您绝对必须这样做,那么请调查 temporary tables第一的。就个人而言,我会重新评估是否有必要。

你似乎想要 EAFP as opposed to LBYL方法,在 this question 的几个答案中进行了描述.我认为这是不必要的。表是相当静态的野兽,您可以使用系统 View USER_TABLES在删除它之前确定它是否存在。

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;
/

关于sql - 在 Oracle pl/sql 中创建或替换表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com