OCI的问题--急
原本是要实现以下的功能
select t.id from tableName where t.id = 1
select t.id from tableName where t.id = 5
.........
select t.ID from tableName where t.id = 100000;
一条一条执行的话速度很慢,于是想到了利用绑定的方法实现 select t.ID from tableName where t.id =:1可是不知道为什么利用下面的代码就只能获取到第一个数据 能不能帮忙看下哪出问题(关于输入变量的以前批量插入的时候都没有问题)
//绑定输入变量(为了测试只查两条语句t.id = 1 和t.id = 5)
int szID[2];
szID[0]=1;szID[1]=5;
OCIBindByPos(stmthp,&bindhp,errhp,1,&szID[0],sizeof(szID[0]),SQLT_INT,0,0,0,0,0,OCI_DEFAULT);
OCIBindArrayOfStruct(bindhp,errhp,sizeof(szID[0]),sizeof(ub2),sizeof(ub2),sizeof(ub2));
//执行
OCIStmtExecute(svchp,stmthp,errhp,0,0,NULL,NULL,OCI_DEFAULT);
//绑定输出变量(略)
//利用OCIStmtFetch2获取最后一行结果的时候发现 依然是1(为什么5没有进来,是不是输入变量绑定有问题啊,谁能帮帮我啊)
------解决方案--------------------
1、从代码上看,你仍然用的是szID[0]数组的第一个元素,当然取到0了。
2、即使迭代成功了,这样也会很慢的。再考虑一下需求,换个方案吧