当前位置: 代码迷 >> SQL >> RPGLE中嵌入SQL时的RNF7049异常处理
  详细解决方案

RPGLE中嵌入SQL时的RNF7049异常处理

热度:96   发布时间:2016-05-05 12:30:59.0
RPGLE中嵌入SQL时的RNF7049错误处理
这个错误来自于程序中在处理NO DATA的GOTO语句,信息如下:

The GOTO branches from within a subroutine to another 

subroutine; the specification is ignored.

ILERPG处理NO DATA如下:

 * 没数据则关闭游标                          C/EXEC SQL WHENEVER NOT FOUND GO TO CLOS1    C/END-EXEC...... * 关闭游标             C     CLOS1         TAG C/EXEC SQL CLOSE C1     C/END-EXEC      

若程序里面分情况定义多个游标,分别处理多种不同情况下的查询,如下:

C/EXEC SQLC+    DECLARE C1 CURSOR FOR SELECT ...C/END-EXECC/EXEC SQLC+    DECLARE C2 CURSOR FOR SELECT ...C/END-EXEC...
处理SQL和处理业务逻辑的过程如下:

定义游标 -> 打开游标 -> 无数据处理(WHENEVER) -> 业务逻辑 -> 关闭游标

按照这样的顺序过程处理的话,在编译的时候,RNF7049错误就出来了,

错误直接指向第二个游标的NO DATA处理,其游标名称居然是其前一个游标名!?

如果按照下面的顺序处理:

定义游标 -> 无数据处理(WHENEVER) -> 业务逻辑 -> 关闭游标

此问题解决!

更多关于RNF7049错误处理

  相关解决方案