我必须为一个简单的查询编写 OCI 代码,例如Select * from emp;
由于我不知道将返回多少行,我无法预先分配缓冲区所以我void **
在关联输出缓冲区时定义了一个指针。
这个想法是调用OCIStmtExecute
with iters = 0
since
对于 SELECT 语句,如果 iters 不为零,则必须为语句句柄完成定义。执行将 iters 行提取到这些预定义的缓冲区中,并根据预取行数预取更多行。如果您不知道 SELECT 语句将检索多少行,请将 iters 设置为零。
如果非 SELECT 语句的 iters=0,此函数将返回错误。
之后,我计划OCIAttrGet(OCI_ATTR_ROW_COUNT)
将数字获取到 select 语句返回的行,然后为输出缓冲区分配内存,然后通过指定因此返回的行数来调用 OCIStmtFetch。
但是即使表返回了数据,我每次得到的行数都是 0。
我的方法有什么缺陷吗?你能指出缺陷吗