使用 FOREACH 语句声明一个直接游标,该游标可以查询和操纵查询返回的结果集的多个的行或者来自集合的多个元素。
SPL 的 FOREACH 语句可以创建的直接顺序游标与 SQL 的 DECLARE 语句可以在 SPL 例程中创建的动态游标不同。(有关 SPL 例程中动态游标的语法和用法,请参阅在 SPL 例程中声明动态游标。)
因为语句块包含其它 FOREACH 语句,所以可以嵌套游标。对于嵌套的游标数量没有限制。
返回多个行、集合元素或值集合的 SPL 例程被称为游标函数。只返回一行或一个值的 SPL 例程是非游标函数。
CREATE PROCEDURE foreach_ex()
DEFINE i, j INT;
FOREACH SELECT c1 INTO i FROM tab ORDER BY 1
INSERT INTO tab2 VALUES (i);
END FOREACH
FOREACH cur1 FOR SELECT c2, c3 INTO i, j FROM tab
IF j > 100 THEN
DELETE FROM tab WHERE CURRENT OF cur1;
CONTINUE FOREACH;
END IF
UPDATE tab SET c2 = c2 + 10 WHERE CURRENT OF cur1;
END FOREACH
FOREACH EXECUTE PROCEDURE bar(10,20) INTO i
INSERT INTO tab2 VALUES (i);
END FOREACH
END PROCEDURE; -- foreach_ex