更新时间:2026-10-21 GMT+08:00
分享

游标循环

游标在WHILE语句、LOOP语句中的使用称为游标循环,一般这种循环都需要使用OPEN、FETCH和CLOSE语句。下面要介绍的一种循环不需要这些操作,可以简化游标循环的操作,这种循环方式适用于静态游标的循环,不用执行静态游标的四个步骤。

语法

FOR AS循环的语法如图1所示。

图1 FOR_AS_loop::=

注意事项

  • 不能在该循环语句中对查询的表进行更新操作。
  • 变量loop_name会自动定义且只在此循环中有效,类型和select_statement的查询结果类型一致。loop_name的取值就是select_statement的查询结果。
  • 变量loop_name在编译过程中不会解析具体的类型,如果有需要解析具体类型的场景(比如loop_name作为重载函数或者存储过程的出入参)会编译报错。

示例

gaussdb=# DROP SCHEMA IF EXISTS hr CASCADE;
gaussdb=# CREATE SCHEMA hr;
gaussdb=# SET current_schema = hr;
--创建员工表
gaussdb=# CREATE TABLE staffs(
    staff_id number(6),
    salary number(8,2),
    section_id int,
    first_name varchar(20)
);
gaussdb=# INSERT INTO staffs VALUES (1,100,1,'Tom');
gaussdb=# BEGIN
FOR ROW_TRANS IN 
        SELECT first_name FROM hr.staffs 
    LOOP 
        DBE_OUTPUT.PRINT_LINE (ROW_TRANS.first_name );
    END LOOP;
END;
/
--执行结果
gaussdb=# Tom
ANONYMOUS BLOCK EXECUTE

相关文档