sqlplus - oracle12c 因为注释/**/产生的ORA-00001: unique constraint (JOE.SYS_C0011177) violated错误

用docker装了个oracle12c,用其自带的sqlplu执行

ORACLE_SID=ORCLCDB sqlplus /nolog @/docker-entrypoint-initdb.d/create05_english_tables.sql

出现了ORA-00001: unique constraint (JOE.SYS_C0011177) violated的错误,仔细看了很久,也没找到问题出在哪里,只能一点点执行,发现一直到执行完毕,才发现只注释的问题。

conn 用户名/"密码" as sysdba
Set ECHO off
set define off

--/
create or replace procedure joe.PROC_DROPTABLEIFEXISTS(p_table in varchar2) 
as
    t_count number(10);
begin
   select count(*) into t_count from user_objects where object_name = upper(p_table);
   if t_count > 0 then
      execute immediate 'drop table ' || p_table ||' cascade constraints';
   end if;
end;
/

--/
begin
   joe.PROC_DROPTABLEIFEXISTS('staff');
end;
/
create table joe.staff(
 id integer not null,
 name varchar(50),
 age number(10),
 sex varchar(50),
 address varchar(50), 
 depart varchar(50), 
 worklen varchar(50),
 wage varchar(50),
 PRIMARY KEY (id)
);
insert into joe.staff values(1,'mali', 27, 'w', 'china','Sale','2','5300');
insert into joe.staff values(2,'marry', 25, 'w', 'china','Technology','2','3500');
/*select * from staff;*/
exit;

执行遇到这个错误

 

 后来定位到错误的原因竟然是/*select * from staff;*/ 引起的,后来删除注释,或者将注释改成 --select * from staff; 就能正常运行了。至于原因还不清楚。

注意:

conn 用户名/"密码" as sysdba 如果密码中含有特殊字符,要用双引号。

 

posted @ 2022-06-16 15:38  panda4671  阅读(187)  评论(0编辑  收藏  举报