FOR LOOP 语句根据一个有上下界的范围内每个整数值重复执行一序列语句。语法格式如下:
FOR counter IN lower_bound..upper_bound LOOP
statement [, statement ]...
END LOOP;
其中,LOOP 和 END LOOP 之间的语句可以使用 FOR 后的变量 counter ,但是不能修改它的值。如果修改 counter 变量,OceanBase 会报错提示:-5102, variable is read only 。
示例:使用 FOR LOOP 语句
假设一个场景,要更新表 cust 的某一列的值,通常用 UPDATE 语句即可。但是如果更新逻辑比较复杂,可以使用 STORED PROCEDURE 结合 FOR LOOP 语句逐笔的更新。
delimiter /
CREATE OR REPLACE PROCEDURE sp_test_for_loop
IS
BEGIN
FOR i IN 1..10 LOOP
dbms_output.put_line('i is ' || to_number(i) );
END LOOP;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
/
delimiter ;
obclient>
obclient> set serveroutput on;
Query OK, 0 rows affected (0.01 sec)
obclient> call sp_test_for_loop();
Query OK, 0 rows affected (0.06 sec)
i is 1
i is 2
i is 3
i is 4
i is 5
i is 6
i is 7
i is 8
i is 9
i is 10
obclient>