通常当我使用不带记录的查询声明游标时:
EXEC SQL Declare abcd Cursor For Select 'A' abc from dual where 1=2
返回sqlca.sqlcode为0。
所以我在一个被多次调用的函数中有一个游标。有时它会提取记录和有时它不依赖于过程阶段,但在某些情况下,声明光标会抛出以下错误&在大多数情况下,它成功通过:
Code [1403], Error Message: [ORA-01403: no data found]
功能工作流程()
{
declare cursor
open cursor
for(;;)
{
fetch into x
if(sqlca.sqlcode != 0)
break;
update using x
}
close cursor;
commit;
}
有人可以提供建议吗,为什么有时候我会收到No-Data-Found。我的工作流程出了问题。
答案 0 :(得分:0)
经过大量的R& D [基本上很多printf' s]我终于找到了这个bug ....
declare cursor doesn't change/return sqlca.sqlcode.
IDK如何在内部工作但是从我的测试程序我发现1403来自另一个查询之前声明游标&声明游标没有返回/改变sqlca.sqlcode 1403持续存在&导致错误。
如果有人可以解释声明是如何工作的,那真的很想为什么它不返回/操纵sqlca.sqlcode。