日期:2014-05-18  浏览次数:20818 次

ORA-02291: 违反完整约束条件 (BEN.SYS_C005646)求解释
create table user_table(userID varchar2(10) primary key ,userName 

varchar2(15) not null,userPwd varchar2(10) not null)----用户表


create table roler(roNo varchar2(10) constraint ro_Pk primary key,roName 

varchar2(15) not null);

create table user_ro(us_ro varchar2(10) constraint ur_Pk primary 
key,userID varchar2(10) references user_table(userID),roNo varchar2(10) 
references roler(roNo));-----用户角色表

现在我建个存储过程来插入数据:
 create sequence auto_id
 start with 1 maxvalue 100000
 increment by 1;
 
drop procedure insert_hd

--创建存储过程
create or replace procedure insert_hd
( userID user_table.userID%type,
  roNo roler.rono%type
 )
as
  id_value number;
  id_len number;
  vid char(10);
begin
  /*for v in 1..n*/
  loop
  select (auto_id.nextval) into id_value from dual;--获得自动生成的序号
  id_len:=length(id_value); -- 判断自动生成的序号的长度,
  -- dbms_output.put_line(id_value);
  case(id_len) --依次来决定序号前增加的0的个数
  when 1 then vid:='ur00000'||id_value;
  when 2 then vid:='ur0000'||id_value;
  when 3 then vid:='ur000'||id_value;
  when 4 then vid:='ur00'||id_value;
  when 5 then vid:='ur0'||id_value;
  when 6 then vid:='ur'||id_value;
  end case;
  --- dbms_output.put_line(vid);
  insert into user_ro
  values(vid,userID,roNo);
  exit when id_value>=1;
  end loop;
end;
commit;

在命令窗口 里面调用存储过程:
SQL> execute insert_hd('u000001','r000003');
之后就报错了:ORA-02291: 违反完整约束条件 (BEN.SYS_C005646) - 未找到父项关键字
ORA-06512: 在 "BEN.INSERT_HD", line 24
ORA-06512: 在 line 2

------解决方案--------------------
变量名和列名相同了。
------解决方案--------------------
你是不是有外键,检查下外键约束 

http://topic.csdn.net/u/20110222/13/747d2675-3670-459c-90f1-2b447123b128.html?64887
这还有个是关于 ORA-06512 问题的