// apply the statement dialog, prepare and execute SQL sentence
// ......
error_proc(errhp, OCIHandleAlloc((dvoid *) envhp,(dvoid **) &stmthp, OCI_HTYPE_STMT,(size_t)structlen,(dvoid **) &gene_data));
error_proc(errhp, OCIStmtPrepare(stmthp,errhp,insert,(ub4) strlen((char *) insert),OCI_NTV_SYNTAX,OCI_DEFAULT));
status = OCIBindByPos(stmthp,&bnd1p,errhp,1, &gene_data.Generator_No,(sword) sizeof(gene_data.Generator_No),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd2p,errhp,2, &gene_data.year,(sword) sizeof(gene_data.year),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd3p,errhp,3, &gene_data.month,(sword) sizeof(gene_data.month),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd4p,errhp,4, &gene_data.day,(sword) sizeof(gene_data.day),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd5p,errhp,5, &gene_data.hour,(sword) sizeof(gene_data.hour),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd6p,errhp,6, &gene_data.minute,(sword) sizeof(gene_data.minute),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd7p,errhp,7, &gene_data.second,(sword) sizeof(gene_data.second),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd8p,errhp,8, &gene_data.A_Voltage_Value,(sword) sizeof(gene_data.A_Voltage_Value),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd9p,errhp,9, &gene_data.A_Voltage_Time,(sword) sizeof(gene_data.A_Voltage_Time),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd10p,errhp,10, &gene_data.A_Current_Value,(sword) sizeof(gene_data.A_Current_Value),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd11p,errhp,11, &gene_data.A_Current_Time,(sword) sizeof(gene_data.A_Current_Time),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd12p,errhp,12, &gene_data.B_Voltage_Value,(sword) sizeof(gene_data.B_Voltage_Value),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd13p,errhp,13, &gene_data.B_Voltage_Time,(sword) sizeof(gene_data.B_Voltage_Time),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd14p,errhp,14, &gene_data.B_Current_Value,(sword) sizeof(gene_data.B_Current_Value),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd15p,errhp,15, &gene_data.B_Current_Time,(sword) sizeof(gene_data.B_Current_Time),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd16p,errhp,16, &gene_data.C_Voltage_Value,(sword) sizeof(gene_data.C_Voltage_Value),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd17p,errhp,17, &gene_data.C_Voltage_Time,(sword) sizeof(gene_data.C_Voltage_Time),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd18p,errhp,18, &gene_data.C_Current_Value,(sword) sizeof(gene_data.C_Current_Value),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd19p,errhp,19, &gene_data.C_Current_Time,(sword) sizeof(gene_data.C_Current_Time),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT);
status |= OCIBindByPos(stmthp,&bnd20p,errhp,20, &gene_data.delta,(sword) sizeof(gene_data.delta),SQLT_STR,(dvoid *) 0,(ub2 *) 0,(ub2 *) 0,(ub4) 0,(ub4 *) 0,OCI_DEFAULT); /*if (status)
{*/
error_proc(errhp,status);
//OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV);
//exit(-1);
//} sscanf(frameBuff,"%d,%d,%d,%d,%d,%d,%d,%d,%f,%d,%f,%d,%f,%d,%f,%d,%f,%d,%f,%d",
&gene_data.Generator_No,
&gene_data.year,&gene_data.month,&gene_data.day,
&gene_data.hour,&gene_data.minute,&gene_data.second, &gene_data.A_Voltage_Time,&gene_data.A_Voltage_Value,
&gene_data.B_Voltage_Time,&gene_data.B_Voltage_Value,
&gene_data.C_Voltage_Time,&gene_data.C_Voltage_Value,
&gene_data.A_Current_Time,&gene_data.A_Current_Value,
&gene_data.B_Current_Time,&gene_data.B_Current_Value,
&gene_data.C_Current_Time,&gene_data.C_Current_Value,
&gene_data.delta
);
display_second( &gene_data );//execute the sentence
if((status = OCIStmtExecute(svchp, stmthp, errhp, (ub4) 20, (ub4) 0, (CONST OCISnapshot *) NULL,(OCISnapshot *) NULL,OCI_DEFAULT)) && status != OCI_SUCCESS_WITH_INFO)
{
display_second( &gene_data );
error_proc(errhp,status);
display_second( &gene_data );
OCIHandleFree((dvoid *) envhp, OCI_HTYPE_ENV);
exit(-1);
}出错在:if((status = OCIStmtExecute(svchp, stmthp, errhp, (ub4) 20, (ub4) 0, (CONST OCISnapshot *) NULL,(OCISnapshot *) NULL,OCI_DEFAULT)) && status != OCI_SUCCESS_WITH_INFO)
我在Oracle中的pmu用户下建立了表gps.
请朋友们帮我看看问题在那?谢谢
解决方案 »
- 在命令提示符下 操作Oracle 显示结果不在一行……
- 救命,ora-00205错误!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 关于job执行间隔时间问题、
- 跨不同数据库种类能用select in 语句吗?
- 关于OCIServerAttach接口的问题
- 新建一个用户,却没有创建函数的权限,如何让这个用户获得这个权限
- 如何查询一个索引实际占用的物理空间
- blob SQL 为何出错ORA-00600
- 高手帮帮忙(编译问题)
- Long Raw 和 BLOB有什么区别
- 正在做程序数据库平台转换,请大家推荐下载数据库书籍的网站,最好有以下书籍:
- oracle 中怎么用存储过程返回记录
/*sscanf(frameBuff,"%d,%d,%d,%d,%d,%d,%d,%d,%f,%d,%f,%d,%f,%d,%f,%d,%f,%d,%f,%d",
这句中/*对应的*/我找了半天,也没看到,唉我不清楚你的程序错在哪,我只是觉得你没必要使用那么多的bind,直接将static text *insert = (text *) "INSERT INTO gps(Generator_No,year,month,day,hour,minute,second,A_Voltage_Value, A_Voltage_Time,A_Current_Value, A_Current_Time,B_Voltage_Value, B_Voltage_Time,B_Current_Value, B_Current_Time,C_Voltage_Value, C_Voltage_Time,C_Current_Value, C_Current_Time,delta) VALUES (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20)";中的(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20)
换成"%d,%d,%d,%d,%d,%d,%d,%d,%f,%d,%f,%d,%f,%d,%f,%d,%f,%d,%f,%d"之类的,然后拼出insert的SQL语句,并且可以将此时的SQL语句作为调试信息输出,就很容易定位错误了。你试试吧。