【问题标题】:Error in fetching from cursor using Oracle Pro*C使用 Oracle Pro*C 从游标中获取错误
【发布时间】:2011-08-03 19:35:02
【问题描述】:

我正在将 ingres C 程序转换为 Oracle Pro*C。

我创建并打开一个游标来执行 SELECT(不是 SELECT FOR UPDATE)。

现有程序确实(大致)

EXEC SQL DECLARE N CURSOR for SELECT...
EXEC SQL OPEN N
EXEC SQL FETCH N INTO :new
while (sqlca.sqlcode != 100) {
  // process the contents of :new
  EXEC SQL FETCH N INTO :new
}
EXEC SQL CLOSE N;

当我到达 select 语句返回的最后一行时,我得到一个错误,ORA-01002: fetch out of sequence。

我不想将我的清理代码放在我的错误处理程序中;我宁愿循环干净地退出。

【问题讨论】:

  • 自己解决了 - 见下文 - 只是想在此处捕获它以防其他人发生这种情况。

标签: c oracle


【解决方案1】:

事实上,仔细分析(我的意思是“大量 printf()s”)表明,在循环完成之前,sqlca.sqlcode 永远不会是 null。

所以我只是将循环上的条件更改为

while (sqlca.sqlcode =='\0') 

而不是

while (sqlca.sqlcode != 100)

一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多