gpt4 book ai didi

sql - 避免 ORA-00955 : name is already used by an existing object

转载 作者:行者123 更新时间:2023-12-02 08:28:41 28 4
gpt4 key购买 nike

我正在 sql 文件中创建如下表,每次有新文件要处理时都会调用它。因此,每次有新文件出现时,我都会删除该表并重新创建并加载。当我从 shell 脚本调用它时,该表被删除并成功创建,但随之而来的是如下错误。知道如何避免这种情况。

ERROR at line 1:
ORA-00955: name is already used by an existing object

删除表并创建 sql 文件:

DROP TABLE SCHEMA.TEMP_SOURCE;
CREATE TABLE SCHEMA.TEMP_SOURCE(
COL 1 VARCHAR2(30 CHAR),
COL 2 VARCHAR2(30 CHAR),
COL 3 VARCHAR2(30 CHAR),
);
/
EXIT;

最佳答案

ORA-00955: name is already used by an existing object

那是因为,您在脚本末尾放置了一个斜杠 /

);

/

因此,缓冲区中的先前语句再次执行。也就是说,CREATE TABLE 语句执行了两次

去掉末尾的斜线。分号足以作为单个查询的语句终止符。

我会这样做:

SQL> BEGIN
2 EXECUTE IMMEDIATE 'DROP TABLE TEMP_SOURCE';
3 EXCEPTION
4 WHEN OTHERS THEN
5 IF SQLCODE != -942 THEN
6 RAISE;
7 END IF;
8 END;
9 /

PL/SQL procedure successfully completed.

SQL>
SQL> CREATE TABLE TEMP_SOURCE
2 (
3 COL_1 VARCHAR2(30 CHAR),
4 COL_2 VARCHAR2(30 CHAR),
5 COL_3 VARCHAR2(30 CHAR)
6 );

Table created.

SQL>

话虽如此,您的脚本中存在多个问题。

COL 1 VARCHAR2(30 CHAR),

列名中不能有空格。 COL 1 是无效的列名。您将收到无效标识符错误

另一个问题:

COL 3 VARCHAR2(30 CHAR),

);

列列表末尾有一个额外的逗号

关于sql - 避免 ORA-00955 : name is already used by an existing object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29533024/

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