源代码为:
int DataBase::_DB_ExecuteSQL()
{
if (_DB_CheckErr(OCIStmtExecute(DBSession->svchp, DBSession->stmthp, DBSession->errhp, (ub4) 1, (ub4) 0,
(OCISnapshot *) NULL, (OCISnapshot *) NULL, (ub4) OCI_DEFAULT) ) < 0 )

{
cout<<"[ "<<__FILE__<<" ] [ "<<__LINE__<<" ] errStr = "<<errStr<<endl;
return DB_FAILURE;
}

if( _DB_CheckErr(OCIAttrGet(DBSession->selectp, OCI_HTYPE_STMT, &colNum, 0, OCI_ATTR_PARAM_COUNT, DBSession->errhp) ) <  0 )
{
cout<<"[ "<<__FILE__<<" ] [ "<<__LINE__<<" ] errStr = "<<errStr<<endl;
return DB_FAILURE;
}

OCIDefine *defnp[100];
int i;
for( i = 0; i < colNum; i++ )
{
defnp[i] = (OCIDefine *) 0;
if( _DB_CheckErr(OCIDefineByPos( DBSession->selectp, &defnp[i], DBSession->errhp,  i+1, (dvoid *) (tmpRec + i)->field,
colNum * sizeof(DB_RECORD), SQLT_STR, (dvoid *)0, (ub2 *)0, (ub2 *)0, OCI_DEFAULT) ) < 0 )
{
cout<<"[ "<<__FILE__<<" ] [ "<<__LINE__<<" ] errStr = "<<errStr<<endl;
return DB_FAILURE;
}
}

return OCI_SUCCESS;
}
标红颜色的为出现问题的代码。
请高手指教!!!!

解决方案 »

  1.   

    太冷门了~google =>Oracle Error : ORA-24374: define not done before fetch or execute and fetch Cause: The application did not define output variables for data being fetched before issuing a fetch call or invoking a fetch by specifying a non-zero row count in an execute call.Action: Issue OCI define calls for the columns to be fetched.
      

  2.   

    这个我也baidu出来了,只是不知道该怎么解决