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