OCIHandleAlloc((dvoid *)envhpp, (dvoid **)&errhpp, OCI_HTYPE_ERROR, (size_t)0, (dvoid **)0);
char sql[255];
sprintf(sql,"%s","insert into scott.emp(empno) values(:9002)");
if (OCIStmtPrepare(stmthpp, errhpp, (text *)sql, (ub4)strlen(sql), (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT) != OCI_SUCCESS)
{
cout << "Create prepare error!" << sql << endl;
exit(1);
}
cout << "Create prepare success!" << endl;
int i;
OCIBind *hbind1 = NULL;
// OCIBind *hbind2 = NULL;
errhpp=NULL;
i=OCIHandleAlloc((dvoid *)envhpp,(dvoid **)&errhpp,OCI_HTYPE_ERROR,(size_t)0, (dvoid **)0);
ub2 stmt_type;
i=OCIBindByPos(stmthpp,&hbind1,errhpp,1,(dvoid *)&gather.id , sizeof(int),SQLT_INT,NULL,NULL,NULL,0,NULL,OCI_DEFAULT);
// i=OCIBindByPos(stmthpp,&hbind2,errhpp,2,(dvoid *)&gather.name,sizeof(gather.name),SQLT_CHR,NULL,NULL,NULL,0,NULL,OCI_DEFAULT);
//OCIDefineByPos(stmthpp, &bhp1, errhpp, 1, (dvoid *)&gather. id, sizeof(int), SQLT_INT,NULL, &datalen, NULL, OCI_DEFAULT);
i=OCIAttrGet ((dvoid *)stmthpp, (ub4)OCI_HTYPE_STMT, (dvoid *)&stmt_type, (ub4 *)0, (ub4)OCI_ATTR_STMT_TYPE, errhpp);
// 执行 SQL 语句
i=OCIStmtExecute(svcctx, stmthpp, errhpp, (ub4)(stmt_type==OCI_STMT_SELECT?1:0), (ub4)0, (OCISnapshot *)NULL, (OCISnapshot *)NULL, OCI_DEFAULT);
if( ( i)!=OCI_SUCCESS)
{
int errcno;
char errbuf[512]={'\0'};
sb4 errcode;
// 返回一个错误指针和一个 OCI 错误代码
OCIErrorGet((dvoid *)errhpp, (ub4)1, (text *)NULL, &errcode, (ub1 *)errbuf, (ub4)sizeof(errbuf), OCI_HTYPE_ERROR);
errcno = errcode;
cout << "Oracle execute failed:" << errbuf << endl;
OCIHandleFree((dvoid *)envhpp,OCI_HTYPE_ENV);
OCIHandleFree((dvoid *)svcctx,OCI_HTYPE_SVCCTX);
//OCIHandleFree((dvoid *)stmthpp,OCI_HTYPE_STMT);
OCIHandleFree((dvoid *)errhpp,OCI_HTYPE_ERROR);
exit(1);
}
cout << "Oracle execute success!"<< endl;
OCILogoff(svcctx, errhpp);
OCIServerDetach(srvhpp, errhpp, OCI_DEFAULT);
OCIHandleFree((dvoid *) stmthpp, OCI_HTYPE_STMT);
OCIHandleFree((dvoid *) svcctx, OCI_HTYPE_SVCCTX);
OCIHandleFree((dvoid *) srvhpp, OCI_HTYPE_SERVER);
OCIHandleFree((dvoid *) errhpp, OCI_HTYPE_ERROR);
return 0;这是我写的关于数据库执行sql语句的程序,可编译能通过,就是跑的时候出现问题说是ora-24333 零迭代器的问题,请牛人榜我看一看程序,到底是哪里有问题,或者是还有什么地方没写完整
char sql[255];
sprintf(sql,"%s","insert into scott.emp(empno) values(:9002)");
if (OCIStmtPrepare(stmthpp, errhpp, (text *)sql, (ub4)strlen(sql), (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT) != OCI_SUCCESS)
{
cout << "Create prepare error!" << sql << endl;
exit(1);
}
cout << "Create prepare success!" << endl;
int i;
OCIBind *hbind1 = NULL;
// OCIBind *hbind2 = NULL;
errhpp=NULL;
i=OCIHandleAlloc((dvoid *)envhpp,(dvoid **)&errhpp,OCI_HTYPE_ERROR,(size_t)0, (dvoid **)0);
ub2 stmt_type;
i=OCIBindByPos(stmthpp,&hbind1,errhpp,1,(dvoid *)&gather.id , sizeof(int),SQLT_INT,NULL,NULL,NULL,0,NULL,OCI_DEFAULT);
// i=OCIBindByPos(stmthpp,&hbind2,errhpp,2,(dvoid *)&gather.name,sizeof(gather.name),SQLT_CHR,NULL,NULL,NULL,0,NULL,OCI_DEFAULT);
//OCIDefineByPos(stmthpp, &bhp1, errhpp, 1, (dvoid *)&gather. id, sizeof(int), SQLT_INT,NULL, &datalen, NULL, OCI_DEFAULT);
i=OCIAttrGet ((dvoid *)stmthpp, (ub4)OCI_HTYPE_STMT, (dvoid *)&stmt_type, (ub4 *)0, (ub4)OCI_ATTR_STMT_TYPE, errhpp);
// 执行 SQL 语句
i=OCIStmtExecute(svcctx, stmthpp, errhpp, (ub4)(stmt_type==OCI_STMT_SELECT?1:0), (ub4)0, (OCISnapshot *)NULL, (OCISnapshot *)NULL, OCI_DEFAULT);
if( ( i)!=OCI_SUCCESS)
{
int errcno;
char errbuf[512]={'\0'};
sb4 errcode;
// 返回一个错误指针和一个 OCI 错误代码
OCIErrorGet((dvoid *)errhpp, (ub4)1, (text *)NULL, &errcode, (ub1 *)errbuf, (ub4)sizeof(errbuf), OCI_HTYPE_ERROR);
errcno = errcode;
cout << "Oracle execute failed:" << errbuf << endl;
OCIHandleFree((dvoid *)envhpp,OCI_HTYPE_ENV);
OCIHandleFree((dvoid *)svcctx,OCI_HTYPE_SVCCTX);
//OCIHandleFree((dvoid *)stmthpp,OCI_HTYPE_STMT);
OCIHandleFree((dvoid *)errhpp,OCI_HTYPE_ERROR);
exit(1);
}
cout << "Oracle execute success!"<< endl;
OCILogoff(svcctx, errhpp);
OCIServerDetach(srvhpp, errhpp, OCI_DEFAULT);
OCIHandleFree((dvoid *) stmthpp, OCI_HTYPE_STMT);
OCIHandleFree((dvoid *) svcctx, OCI_HTYPE_SVCCTX);
OCIHandleFree((dvoid *) srvhpp, OCI_HTYPE_SERVER);
OCIHandleFree((dvoid *) errhpp, OCI_HTYPE_ERROR);
return 0;这是我写的关于数据库执行sql语句的程序,可编译能通过,就是跑的时候出现问题说是ora-24333 零迭代器的问题,请牛人榜我看一看程序,到底是哪里有问题,或者是还有什么地方没写完整
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货