DB2 V9.7 for Linux, UNIX, and Windows

SQL 过程中的 FOR 语句

FOR 语句是特殊类型的循环语句,原因是它们用于迭代已定义只读结果集中的行。执行 FOR 语句时,将隐式声明游标以使对于 FOR 循环的每次迭代,访存的下一行是结果集。循环会持续直到结果集中没有余下任何行。

FOR 语句简化了游标的实现,并且使得检索可对其执行逻辑运算的一组行的一组列值变得很轻松。

以下是仅包含简单 FOR 语句的 SQL 过程的示例:
  CREATE PROCEDURE P()
  LANGUAGE SQL
  BEGIN ATOMIC
    DECLARE fullname CHAR(40);
   
    FOR v AS cur1 CURSOR FOR 
                SELECT firstnme, midinit, lastname FROM employee
    DO 
      SET fullname = v.lastname || ',' || v.firstnme 
                     ||' ' || v.midinit;
      INSERT INTO tnames VALUES (fullname);
    END FOR;
  END

注意:可使用 CONCAT 函数更好地实现以上示例中显示的逻辑。此简单示例用于演示语法。

FOR 循环名称对为实现 FOR 语句而生成的隐式复合语句指定标签。它遵循复合语句的标签的规则。可使用 FOR 循环名称来限定 SELECT 语句返回的结果集中的列名。

游标名仅命名用于从结果集中查询行的游标。如果未指定此名称,那么 DB2® 数据库管理器将自动在内部生成唯一游标名。

SELECT 语句的列名必须唯一,并且需要用于指定某个表(或多个表,如果执行 JOIN 或 UNION 之类的操作)的 FROM 子句。执行循环之前,引用的表和列必须存在。可引用全局临时表和已声明临时表。

FOR 循环支持定位式更新和删除以及搜索式更新和删除。为确保结果正确,FOR 循环游标规范必须包括 FOR UPDATE 子句。

不能在 FOR 循环外部引用在 FOR 语句支持下创建的游标。