FOREACH 语句允许您为 SPL 集合变量声明游标。 这种游标称为集合游标。使用集合变量访问集合(SET、 MULTISET 、LIST)列的元素。当要访问集合变量中的一个或多个元素时,请使用游标。
DEFINE a SMALLINT; DEFINE b SET(SMALLINT NOT NULL); SELECT numbers INTO b FROM table1 WHERE id = 207; FOREACH cursor1 FOR SELECT * INTO a FROM TABLE(b); ... END FOREACH;
在此示例中,SELECT 语句从集合变量 b 中一次选择一个元素插入到元素变量 a 中。该投影列表是星号,因为集合变量 b 包含内置类型的集合。变量 b 与 TABLE 关键字作为 Collection-Derived Table 一起使用。有关更多信息,请参阅集合派生表。
DEFINE employees employee_t; DEFINE n VARCHAR(30); DEFINE s INTEGER; SELECT emp_list into employees FROM dept_table WHERE dept_no = 1057; FOREACH cursor1 FOR SELECT name,salary INTO n,s FROM TABLE( employees ) AS e; ... END FOREACH;
这里的集合变量 employees 包含一个 ROW 类型的集合。每个 ROW 类型包含 name 和 salary 字段。该集合查询每次查询一个名字和薪水,并将 name 放到 n 中将 salary 放到 s 中。AS 关键字声明 e 作为集合派生表 employees 的别名。只要 SELECT 语句执行,该别名就存在。