我正在 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: 名称已被现有对象使用
那是因为,你加了一个斜杠/
在脚本的最后。
);
/
因此,缓冲区中的前一条语句将再次执行。这意味着,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>
话虽如此,脚本中存在多个问题。
第 1 列 VARCHAR2(30 个字符),
列名称中不能有空格。COL 1
是无效的列名。你会得到无效标识符错误.
另一个问题:
COL 3 VARCHAR2(30 个字符),
);
还有一个额外的comma in the 列列表的末尾.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)