如何检查SQL光标是否指向ile rpg中文件的第一条记录?

如何检查SQL光标是否指向ile rpg中文件的第一条记录?,sql,db2,rpgle,Sql,Db2,Rpgle,我制作了一个包含图片的文件,它就像一个照片库。 因此,当我返回F12时,我希望看到文件中的先前记录 如果光标到达文件的第一条记录,则应关闭程序 实际上,它是在循环中运行的,它正在加载先前的记录,并且从不离开循环 如何在文件的第一条记录之后告诉程序停止 以下是我的SQL: EXEC SQL DECLARE C1 SCROLL CURSOR FOR SELECT * FROM FILE WHERE [variables]..... ORDER BY ....

我制作了一个包含图片的文件,它就像一个照片库。 因此,当我返回F12时,我希望看到文件中的先前记录

如果光标到达文件的第一条记录,则应关闭程序

实际上,它是在循环中运行的,它正在加载先前的记录,并且从不离开循环

如何在文件的第一条记录之后告诉程序停止

以下是我的SQL:

     EXEC SQL
     DECLARE C1 SCROLL CURSOR FOR SELECT * FROM FILE
     WHERE [variables].....
     ORDER BY ....
     FOR FETCH ONLY;

     EXEC SQL
     OPEN JCBBC1; 

     EXEC SQL
     FETCH NEXT FROM C1 INTO :FILE; 

     DOW SQLCOD = *ZERO;
       *do something....*
       IF F12 is pressed;
         EXEC SQL
         FETCH PRIOR FROM C1 INTO :FILE;
     ENDDO;

ROW_NUMBER()是一个函数,它生成一个psuedo列,其中包含从1开始的连续数字,并对每一行返回的结果进行计数(因此,ROW_NUMBER()的名称)。

给定您显示的代码,SQLCODE应为非零,循环应退出

实际代码在
FETCH
ENDDO
之间是否有另一个
EXEC SQL


如果是这样的话,那就是重置
SQLCOD
,您应该在每个可执行SQL语句之后立即检查
SQLCODE
SQLSTATE

这在这里并没有真正的帮助,因为该语句不是真正的问题,而是其余的问题(未显示)代码。如果你刚开始,为什么要关闭程序?如果我想再次向前遍历集合,会发生什么?因此,打开一个可滚动的光标很可能是一个巨大的资源消耗——您最好将记录批处理到内存数组中,并对其进行迭代(如果照片列表足够小的话,这可能完全不需要光标)。