【发布时间】:2018-07-25 16:34:05
【问题描述】:
我制作了一个 PL/SQL 块,如果它不存在,它会创建一个表。如果它存在,那么它会截断表。当我执行脚本时,我收到以下错误:
ORA-00955 name is already used by an existing object
你能帮我解决这个错误吗?
脚本
DECLARE
nCount NUMBER;
vSqlStatement LONG;
BEGIN
SELECT count(1) into nCount FROM all_tables where table_name = 'CHANGES';
IF(nCount <= 0)
THEN
dbms_output.put_line (' Greather or equal to 0: ' || nCount);
vSqlStatement:='
CREATE TABLE ADMRAPPORT.CHANGES
(
"ID" NUMBER(10),
"VersionName" VARCHAR2(255),
"VersionNumber" NUMBER(10),
"Version_ID" NUMBER(10),
"VersionFlag" VARCHAR2(255)
)';
execute immediate vSqlStatement;
END IF;
IF(nCount > 0)
THEN
dbms_output.put_line (' Smaller then 0');
vSqlStatement:='TRUNCATE TABLE ADMRAPPORT.CHANGES';
execute immediate vSqlStatement;
END IF;
END;
【问题讨论】:
-
提示:
ADMRAPPORT. -
您没有在数据字典中测试
changes表的名称 - 因此,具有此名称的对象很可能位于admrapport中。注意:文本输出与您的条件不匹配 -
嗨,戈登,我不明白你的评论,你能解释一下吗?
-
嗨,collapser,我改进了这个问题,但我仍然遇到同样的错误!
-
你从“SELECT * FROM all_tables where table_name = 'CHANGES'”得到什么?