我在数据表的NUMBER型列中用ADO操作插入double型数据,循环插入操作,每次插入的值相同;前几个循环下来没问题,可时间一长就会出现ORA-01426:数字溢出;且每次出现的时间都不同,不知是我程序操作问题还是ORACLE不稳定,请哪位专家指导一下!!!
下面是部分代码:
             while(true)
{
for(int cc = 1; cc<=4; cc++)
{ try
{
_variant_t   RecordsAffected; 
CString sqlstr = "";
sqlstr.Format("INSERT INTO Control_command VALUES (to_date('%s','yyyy-mm-dd                           HH24:MI:SS'),'%d', '%lf','%lf','%lf')",aDlg->cstime, cc,
aDlg->p[temp+0],aDlg->p[temp+1],aDlg->p[temp+2]);     //最后三列是number型 aDlg->m_pConServer->Execute((_bstr_t)sqlstr,&RecordsAffected,adCmdText);
}
catch (_com_error e)
{
CString csError="";
csError.Format("%s\n", (char *)e.Description());
AfxMessageBox(csError); 
return 1;
}
temp+=3;
}
}

解决方案 »

  1.   

    你把要插入的值打印出来,看看是不是有效的数值。这与oracle无关的
      

  2.   

    将你的sqlstr 写到一个日志中,或者截获出错时的sqlstr内容,确认出错的问题点。
      

  3.   

    把你数据库中number对应字段的定义sql贴出来,然后把你插入对应列的值也贴出来看看。
      

  4.   

    你这样描述真的没法看出问题,只知道是你插入的值的精度大于了数据库中对应字段的精度。
    我也看不懂你的c程序(我用java)。