FOR循环中的上限不会在循环中改变,为什么?

Vin*_*eet 1 plsql oracle9i plsqldeveloper

我试图改变For循环中上限的值,但循环运行直到在起始中定义的上限.

根据逻辑循环应该是无限的,因为v_num的值总是先于i,但循环执行三次.请解释

这是代码

    DECLARE
    v_num number:=3;
    BEGIN
        FOR i IN 1..v_num LOOP
           v_num:=v_num+1;
           DBMS_OUTPUT.PUT_LINE(i ||'  '||v_num);
     END LOOP;
    END;
Ouput Coming

    1  4
    2  5
    3  6
Run Code Online (Sandbox Code Playgroud)

Hea*_*utt 7

此行为与文档中指定的一样:

FOR-LOOP
...
在首次输入FOR循环时评估范围,并且从不重新评估.

(Oracle文档)