FOR LOOP 语句根据一个有上下界的范围内每个整数值重复执行一序列语句。语法格式如下:

    1. FOR counter IN lower_bound..upper_bound LOOP
    2. statement [, statement ]...
    3. END LOOP;

    其中,LOOP 和 END LOOP 之间的语句可以使用 FOR 后的变量 counter ,但是不能修改它的值。如果修改 counter 变量,OceanBase 会报错提示:-5102, variable is read only 。

    示例:使用 FOR LOOP 语句

    假设一个场景,要更新表 cust 的某一列的值,通常用 UPDATE 语句即可。但是如果更新逻辑比较复杂,可以使用 STORED PROCEDURE 结合 FOR LOOP 语句逐笔的更新。

    1. delimiter /
    2. CREATE OR REPLACE PROCEDURE sp_test_for_loop
    3. IS
    4. BEGIN
    5. FOR i IN 1..10 LOOP
    6. dbms_output.put_line('i is ' || to_number(i) );
    7. END LOOP;
    8. EXCEPTION
    9. WHEN OTHERS THEN
    10. NULL;
    11. END;
    12. /
    13. delimiter ;
    14. obclient>
    15. obclient> set serveroutput on;
    16. Query OK, 0 rows affected (0.01 sec)
    17. obclient> call sp_test_for_loop();
    18. Query OK, 0 rows affected (0.06 sec)
    19. i is 1
    20. i is 2
    21. i is 3
    22. i is 4
    23. i is 5
    24. i is 6
    25. i is 7
    26. i is 8
    27. i is 9
    28. i is 10
    29. obclient>