FOR (integer variant) v15

Syntax

FOR <name> IN [REVERSE] <expression .. expression> LOOP
    <statements>
END LOOP;

This form of FOR creates a loop that iterates over a range of integer values. The variable name is of type INTEGER and exists only inside the loop. The two expressions giving the loop range are evaluated once when entering the loop. The iteration step is +1.

name begins with the value of expression to the left of .. and terminates when name exceeds the value of expression to the right of ... Thus the two expressions take on the roles start-value.. end-value.

The optional REVERSE clause specifies for the loop to iterate in reverse order. The first time through the loop, name is set to the value of the right-most expression. The loop terminates when the name is less than the left-most expression.

Example

This example uses a FOR loop that iterates from 1 to 10:

BEGIN
    FOR i IN 1 .. 10 LOOP
        DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
    END LOOP;
END;

The following is the output after using the FOR statement:

Output
Iteration # 1
Iteration # 2
Iteration # 3
Iteration # 4
Iteration # 5
Iteration # 6
Iteration # 7
Iteration # 8
Iteration # 9
Iteration # 10

If the start value is greater than the end value, the loop body doesn't execute. No error occurs, as shown by the following example:

BEGIN
    FOR i IN 10 .. 1 LOOP
        DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
    END LOOP;
END;

This example has no output as the loop body never executes.

Note

SPL also supports cursor FOR loops. See Cursor FOR loop.