我正在将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。
我不想把我的清理代码放在我的错误处理程序中;我宁愿干净地退出循环。
答案 0 :(得分:3)
事实上,仔细分析(我的意思是“吨的printf()s”)表明在循环完成之前,sqlca.sqlcode绝不会是null。
所以我只是将循环上的条件改为
while (sqlca.sqlcode =='\0')
而不是
while (sqlca.sqlcode != 100)
一切都很好。