使用Oracle Pro * C从游标获取时出错

时间:2011-08-03 19:35:02

标签: c oracle

我正在将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。

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

1 个答案:

答案 0 :(得分:3)

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

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

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

而不是

while (sqlca.sqlcode != 100)

一切都很好。