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 如果密码中含有特殊字符,要用双引号。