多次声明相同的游标时出现奇怪的游标行为

时间:2017-11-03 10:56:25

标签: c oracle-pro-c

通常当我使用不带记录的查询声明游标时:

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。我的工作流程出了问题。

1 个答案:

答案 0 :(得分:0)

经过大量的R& D [基本上很多printf' s]我终于找到了这个bug ....

 declare cursor doesn't change/return sqlca.sqlcode.

IDK如何在内部工作但是从我的测试程序我发现1403来自另一个查询之前声明游标&声明游标没有返回/改变sqlca.sqlcode 1403持续存在&导致错误。

如果有人可以解释声明是如何工作的,那真的很想为什么它不返回/操纵sqlca.sqlcode。