Oracle10g c ora-02291错误

Oracle10g c ora-02291错误,oracle10g,odp.net,Oracle10g,Odp.net,这是一个奇怪的。。。 我有两张桌子 tableB在tableA中有一个外键 我有2个存储过程,一个插入到tableA,另一个插入到tableB 我使用odp.net运行第一个存储过程,将一条记录插入到tableA中。然后,我可以打开SQLPlus并选择此记录 然后,我运行第二个存储过程,插入到tableB中。 由于ora-02291-integrity-constraint-Villected-parent-key-not-found,它失败 我检查了两次、三次、四次拼写错误等。。。没什么 当我

这是一个奇怪的。。。 我有两张桌子 tableB在tableA中有一个外键

我有2个存储过程,一个插入到tableA,另一个插入到tableB

我使用odp.net运行第一个存储过程,将一条记录插入到tableA中。然后,我可以打开SQLPlus并选择此记录

然后,我运行第二个存储过程,插入到tableB中。 由于ora-02291-integrity-constraint-Villected-parent-key-not-found,它失败

我检查了两次、三次、四次拼写错误等。。。没什么

当我在SQLPlus中使用相同的存储过程手动执行相同的操作时,事情变得更加奇怪,它可以毫无问题地工作

这让我花了12个多小时寻找一些我知道必须简单的东西。 这是狂欢节

斯波罗卡

狂欢


是的,我非常确定——毫无疑问,弗基。 尽管如此,我还是解决了这个问题。。。。。顺便说一句,这太愚蠢了。
我错误地认为ODP.NET中的“命名参数”意味着我不必按存储过程中引用的顺序添加这些参数。长话短说-在我重新写了大约4次之后,我修改了参数的顺序,现在它是固定的

对我来说,ORA-02291错误意味着使用的FK之一不是有效的pk或不是另一个表中的现有pk


只需确保插入表中的每个FK都是有效的。

表a和表B中INTXID的DB类型是什么?在.net代码中映射到什么类型?数据库类型:char22 Oracle.DataAccess.Client.OracleParameter.DBType:String OracleParameter.OracleDBType:Varchar2 OracleParameter.OracleDBTypeEx:Varchar2是否确定引发异常的是引用INTXSEGMENT.INTXID的外键,而不是另一个外键约束?要调试它,我将禁用该外键,并运行测试,如果成功,则检查INTX_参与者表的内容以验证INTXID列中的值。是的,我非常确定-毫无疑问,FKEY。尽管如此,我还是解决了这个问题。。。。。顺便说一句,这太愚蠢了。我错误地认为ODP.NET中的“命名参数”意味着我不必按存储过程中引用的顺序添加这些参数。长话短说-在我重新写了大约4次之后,我修改了参数的顺序,现在它是固定的。
CREATE OR REPLACE PROCEDURE genData_TestTrackerSegment
  (
    INTX_ID IN IntxSegment.IntxID%TYPE,
    siteid IN INT
  )
AS
BEGIN
INSERT INTO INTXSEGMENT(INTXID,INTXTYPEID,VERSION,ISPRIVATE,
SEGMENTTYPE,STARTDATETIME,INTXDIRECTION,SITEID)
VALUES(INTX_ID,1,1,0,1,SYSDATE,1,siteid);
COMMIT;
END;
CREATE OR REPLACE PROCEDURE genData_TestTrackerPart
  (
    INTX_ID IN IntxSegment.IntxID%TYPE,
    INTX_PART_ID IN INTX_PARTICIPANT.INTX_PART_ID%TYPE,
    INDIVID IN INDIVIDUAL.INDIVID%TYPE,
    CALLID IN INTX_PARTICIPANT.CALLIDKEY%TYPE
  )AS
BEGIN
INSERT INTO
INTX_PARTICIPANT(INTXID,INTX_PART_ID,INDIVID,ROLE,
CALLIDKEY,RECORDED,VERSION,STARTDATETIME)
VALUES(INTX_ID,INTX_PART_ID,INDIVID,1,CALLID,1,1,SYSDATE);
COMMIT;
END;