OCI批量获取数据
来源:互联网 发布:程序员入门教程百度云 编辑:程序博客网 时间:2024/06/07 12:06
最近在写OCI获取数据的功能,OCI批量获取数据遇到了一些问题。
OCIStmt* pStmt = NULL;
OCIStmt* pCur = NULL;
OCIHandleAlloc(m_pEnvHandle,(dvoid**)&pStmt,OCI_HTYPE_STMT,0,NULL);
OCIStmtPrepare(pStmt,m_pErrHandle,(const OraText *)sSql.c_str(),sSql.length(),OCI_NTV_SYNTAX,OCI_DEFAULT);
OCIHandleAlloc(m_pEnvHandle, (void **)(&pCur), OCI_HTYPE_STMT, 0, NULL);
OCIBindByPos(pStmt,&pBind, m_pErrHandle, outOrder, &pCur, 0,SQLT_RSET,
pIndicator, 0,NULL, 0,0,OCI_DEFAULT);
OCIStmtExecute(m_pSvcHandle, pStmt, m_pErrHandle, 1, 0, NULL, NULL,
OCI_COMMIT_ON_SUCCESS) ;
上面是是参数的绑定和执行。
if ( CheckError(OCIDefineByPos(pCur,&m_lpDefine,
m_pErrHandle,col+1,(void*)m_pData,
(SQLT_BLOB == m_nDataType) ? -1 : m_nDataLen,
(SQLT_BLOB == m_nDataType) ? m_nDataType : SQLT_STR,
pArrIndicator,NULL,NULL,OCI_DEFAULT)) )
{
break;
}
上面这一步很重要,这里讲的是批量获取数据,所以指示器变量 pArrIndicator必须是数据的指针,因为这个指示器指示的是每一行的的每一列的指示的值,对于查询操 作是输出参数,所以这里一定要申请的是一个数据的指针,不然后面可能会导致程序内存越界而崩溃,而且崩溃了问题不好找。
nStat = OCIStmtFetch2(pCur,m_pErrHandle,ROWS,OCI_FETCH_NEXT,1,OCI_DEFAULT);这一步是执行批量获取数据,一次获取 ROWS行,获取的数据在m_pData里。如果nStat是OCI_SUCCESS,是获取这么多行成功。
如果是OCI_NO_DATA可能是这次获取的行数不够ROWS行或数据已经获取完毕,通过函数OCIAttrGet(pCur,OCI_HTYPE_STMT,&nRows,(ub4*)NULL,OCI_ATTR_ROWS_FETCHED,m_pErrHandle)来得到本次获取的行数nRows。
本次就说到这里,主要是OCI批量获取数据需要注意的问题。
- OCI批量获取数据
- OCI 批量数据操作
- OCI 获取嵌套sql语句数据
- 扫描文件夹将获取文件oci数据入库
- OCI 批量入库Lob字段
- batch批量获取数据和批量插入batchInsert工作总结
- SQL触发器使用游标获取批量数据
- SpringMVC获取表单批量提交数据
- IMP 导入数据报错 OCI-21500 OCI-22275
- 使用模板列获取批量获取DataGrid中的数据
- OCI
- oci
- 批量获取DataGrid控件模板列中的数据
- 批量获取DataGrid控件模板列中的数据
- 批量获取DataGrid控件模板列中的数据
- VS2008中如何批量注释 图像像素数据获取
- 终于理解POST请求和批量获取数据
- 使用游标批量获取数据提高查询性能
- java 操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元
- Zigbee 协议栈
- 第一名
- Windows 2008 R2 防火墙允许Serv-U通过的方法
- JMX学习笔记一
- OCI批量获取数据
- android jni机制
- 二进制 AVI格式解析
- 做数据库维修工、还是码农,讨论走下神坛的职业
- JavaScript 开发规范
- 原来如此
- 算法复杂度分析
- JavaBean的详细及引用
- 配置Ubuntu Server 12.04高速apt-get源