FOR AS [()] DO
| {.}
END FOR
::= 定义包含行结果的标识符。
::= 指定要打开的游标的名称。
::= [,{}...] 指定要传递到游标的 select 语句的一个或多个参数。
::= 指定要传递给游标的标量值。
::= !! SQLScript procedural statements 定义将要循环的过程语句。
. ::= !! Provides attribute access 要访问循环主体中的行结果属性,请使用显示的语法。
打开先前声明的游标,遍历绑定到该游标的查询结果集中的每一行。过程主体中的语句是针对结果集中的每一行执行的。处理完游标的最后一行后,将退出循环并关闭游标。 提示由于此循环方法负责打开和关闭游标,因此可以避免资源泄漏。因此,此循环优先于显式打开和关闭游标并使用其它循环变式。
在循环主体中,可以像访问游标属性一样访问游标当前迭代的行属性。假设
以下示例演示如何使用 FOR -loop 对 c_cursor1 的结果进行循环。
CREATE PROCEDURE foreach_proc() LANGUAGE SQLSCRIPT AS
BEGIN
DECLARE v_isbn VARCHAR(20) = '';
DECLARE CURSOR c_cursor1 (v_isbn VARCHAR(20)) FOR
SELECT isbn, title, price, crcy FROM books
ORDER BY isbn;
FOR cur_row AS c_cursor1(v_isbn)
DO
CALL ins_msg_proc('book title is: ' || :cur_row.title);
END FOR;
END;