14.29 EXIT Statement
The EXIT
statement exits the current iteration of a loop, either conditionally or unconditionally, and transfers control to the end of either the current loop or an enclosing labeled loop.
The EXIT
WHEN
statement exits the current iteration of a loop when the condition in its WHEN
clause is true, and transfers control to the end of either the current loop or an enclosing labeled loop.
Each time control reaches the EXIT
WHEN
statement, the condition in its WHEN
clause is evaluated. If the condition is not true, the EXIT
WHEN
statement does nothing. To prevent an infinite loop, a statement inside the loop must make the condition true.
Restriction on EXIT Statement
An EXIT
statement must be inside a LOOP
statement.
Topics
Syntax
Semantics
exit_statement
label
Name that identifies either the current loop or an enclosing loop.
Without label
, the EXIT
statement transfers control to the end of the current loop. With label
, the EXIT
statement transfers control to the end of the loop that label
identifies.
WHEN boolean_expression
Without this clause, the EXIT
statement exits the current iteration of the loop unconditionally. With this clause, the EXIT
statement exits the current iteration of the loop if and only if the value of boolean_expression
is TRUE
.
Examples
Example 14-26 Basic LOOP Statement with EXIT Statement
In this example, the EXIT
statement inside the basic LOOP
statement transfers control unconditionally to the end of the current loop.
DECLARE x NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE ('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; IF x > 3 THEN EXIT; END IF; END LOOP; -- After EXIT, control resumes here DBMS_OUTPUT.PUT_LINE(' After loop: x = ' || TO_CHAR(x)); END; /
Result:
Inside loop: x = 0 Inside loop: x = 1 Inside loop: x = 2 Inside loop: x = 3 After loop: x = 4
Example 14-27 Basic LOOP Statement with EXIT WHEN Statement
In this example, the EXIT
WHEN
statement inside the basic LOOP
statement transfers control to the end of the current loop when x
is greater than 3.
DECLARE x NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; -- prevents infinite loop EXIT WHEN x > 3; END LOOP; -- After EXIT statement, control resumes here DBMS_OUTPUT.PUT_LINE('After loop: x = ' || TO_CHAR(x)); END; /
Result:
Inside loop: x = 0 Inside loop: x = 1 Inside loop: x = 2 Inside loop: x = 3 After loop: x = 4
Related Topics