DB2 SQLPL - 无法退出无限循环

DB2 SQLPL - Unable to exit Infinite loop

我创建了一个存储过程,通过遍历 DB2 示例数据库中 Employees Table 中的每一行来手动计算标准偏差 -

但是,程序陷入了死循环。我不确定为什么它会卡住,因为我预计 SQLSTATE 在阅读 table 的最后一行并希望退出后不会是“00000”。问题是什么?我该如何调试?我该如何解决?

除了 GET DIAGNOSTICS 之外,每个语句后 SQLSTATE 变量都会重置。这就是为什么每个 SQLSTATE 检查都必须立即跟在 FETCH 之后。这种循环处理还有另一种技术,它基于 NOT FOUND 条件的异常处理程序 + 在那里设置的标志变量。
以下是可能的解决方案之一。

OPEN cursor1;
FETCH FROM cursor1 INTO TEMP;
WHILE(SQLSTATE = '00000')
       DO
           SET SUM_SALARY = SUM_SALARY + TEMP;
           SET SUM_SALARY_SQUARED = SUM_SALARY_SQUARED + (TEMP * TEMP);
           SET NUM_ROWS = NUM_ROWS + 1;
           FETCH FROM cursor1 INTO TEMP;
       END WHILE;