gpt4 book ai didi

oracle - 在Oracle中创建表之前检查表是否存在

转载 作者:行者123 更新时间:2023-12-03 10:01:21 25 4
gpt4 key购买 nike

在 Oracle 中创建之前尝试检查表是否存在。搜索来自 Stackoverflow 和其他人的大部分帖子。查找一些查询,但它对我不起作用。

IF((SELECT count(*) FROM dba_tables where table_name = 'EMPLOYEE') <= 0)
THEN
create table EMPLOYEE
(
ID NUMBER(3),
NAME VARCHAR2(30) NOT NULL
)
END IF;

这给了我错误
Error: ORA-00900: invalid SQL statement
SQLState: 42000
ErrorCode: 900
Position: 1

我搜索 IF 的语法条件,我想这也是写的。
请建议我....

最佳答案

正如 Rene 还评论的那样,先检查然后创建表的情况很少见。
如果您想根据您的方法运行代码,这将是:

declare
nCount NUMBER;
v_sql LONG;

begin
SELECT count(*) into nCount FROM dba_tables where table_name = 'EMPLOYEE';
IF(nCount <= 0)
THEN
v_sql:='
create table EMPLOYEE
(
ID NUMBER(3),
NAME VARCHAR2(30) NOT NULL
)';
execute immediate v_sql;

END IF;
end;

但我宁愿捕获异常,为您节省一些不必要的代码行:
declare
v_sql LONG;
begin

v_sql:='create table EMPLOYEE
(
ID NUMBER(3),
NAME VARCHAR2(30) NOT NULL
)';
execute immediate v_sql;

EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -955 THEN
NULL; -- suppresses ORA-00955 exception
ELSE
RAISE;
END IF;
END;
/

关于oracle - 在Oracle中创建表之前检查表是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15630771/

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