如何检查 SQL 光标是否指向 ile rpg 文件的第一条记录?
How to check if the SQL cursor is pointing onto the first record of a file in ile rpg?
我制作了一个包含图片的文件,它的工作方式类似于照片库。
所以,当我按 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() 是一个函数,它生成一个伪列,其中包含从 1 开始的连续数字,并为返回结果的每一行向上计数(因此得名 ROW_NUMBER())。
鉴于您显示的代码,SQLCODE 应该是非零的并且循环应该退出。
实际代码在 FETCH
和 ENDDO
之间是否还有另一个 EXEC SQL
。
如果是这样,那就是重置 SQLCOD
,您应该在每个可执行的 SQL 语句之后立即检查 SQLCODE
或 SQLSTATE
。
我制作了一个包含图片的文件,它的工作方式类似于照片库。 所以,当我按 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() 是一个函数,它生成一个伪列,其中包含从 1 开始的连续数字,并为返回结果的每一行向上计数(因此得名 ROW_NUMBER())。
鉴于您显示的代码,SQLCODE 应该是非零的并且循环应该退出。
实际代码在 FETCH
和 ENDDO
之间是否还有另一个 EXEC SQL
。
如果是这样,那就是重置 SQLCOD
,您应该在每个可执行的 SQL 语句之后立即检查 SQLCODE
或 SQLSTATE
。