出错信息如下:
INSERT INTO info.t_ci_usersvcplan_his FAIL:ORA-00001: unique constraint (INFO.PK_T_CI_
USERSVCPLAN_HIS_A) violated;语句:
insert into tablename
.........
EXEC SQL PREPARE I18 FROM :sBuff;
EXEC SQL for :iInTableNum EXECUTE I18 using :OffNetUserId;数据是存在结构体OffNetUserId中,iInTableNum 为3000条,怎么才能让它在执行出错时,输出有错误的那一条数据呢?谢谢

解决方案 »

  1.   

    1、做一个循环一条一条插入不就知道了?
    2、从错误来看应该是主键重复了,你可以根据主键group by 主键 having count(*) >1的记录
      

  2.   

    如果proc程序,你可以在程序里加一段错误后的处理代码,然后printf出来就可以了
    如果是sqlplus代码,用exception段来处理
      

  3.   

    if(sqlca.sqlcode!=SQLSUCCESS&&sqlca.sqlcode!=SQLNOTFOUND)
    {
          printf('%s',OffNetUserId[sqlca.sqlerrd[2]]);
                  /*这样就可以把有主键冲突的那个记录打印出来了么?*/
    }