WITH RESUME 关键字

如果使用 WITH RESUME 关键字,则在执行 RETURN 语句后,SPL 函数的下一个调用(对下一个 FETCH 或 FOREACH 语句)从跟随 RETURN 语句的语句开始。任何执行 RETURN WITH RESUME 语句的函数必须在 FOREACH 循环或 SELECT 的 FROM 子句中被调用。如果 SPL 例程执行 RETURN WITH RESUME 语句,则 GBase 8s ESQL/C 应用程序中的 FETCH 语句可以调用 SPL 例程。

以下示例显示另一个 UDR 可调用的游标函数。在 RETURN WITH RESUME 语句将每个值返回到调用的 UDR 或程序后,在下一次调用 series 时执行 series 的下一行。如果变量 backwards 等于零(0),则没有值返回给调用的 UDR 或程序,并停止 series 的执行:
CREATE FUNCTION series (limit INT, backwards INT) RETURNING INT;
          DEFINE i INT;
          FOR i IN (1 TO limit)
          RETURN i WITH RESUME;
          END FOR;
          IF backwards = 0 THEN
          RETURN;
          END IF;
          FOR i IN (limit TO 1 STEP -1)
          RETURN i WITH RESUME;
          END FOR;
          END FUNCTION; -- series