|PL/SQL User's Guide and Reference
10g Release 1 (10.1)
Part Number B10807-01
GOTO statement branches unconditionally to a statement label or block label. The label must be unique within its scope and must precede an executable statement or a PL/SQL block. The
GOTO statement transfers control to the labelled statement or block. For more information, see "Using the GOTO Statement".
Keyword and Parameter Description
A label that you assigned to an executable statement or a PL/SQL block. A
GOTO statement transfers control to the statement or block following
Some possible destinations of a
GOTO statement are not allowed. In particular, a
GOTO statement cannot branch into an
LOOP statement, or sub-block.
From the current block, a
GOTO statement can branch to another place in the block or into an enclosing block, but not into an exception handler. From an exception handler, a
GOTO statement can branch into an enclosing block, but not into the current block.
If you use the
GOTO statement to exit a cursor
FOR loop prematurely, the cursor is closed automatically. The cursor is also closed automatically if an exception is raised inside the loop.
A given label can appear only once in a block. However, the label can appear in other blocks including enclosing blocks and sub-blocks. If a
GOTO statement cannot find its target label in the current block, it branches to the first enclosing block in which the label appears.
GOTO label cannot precede just any keyword. It must precede an executable statement or a PL/SQL block. To branch to a place that does not have an executable statement, add the
FOR ctr IN 1..50 LOOP DELETE FROM emp WHERE ... IF SQL%FOUND THEN GOTO end_loop; END IF; ... <<end_loop>> NULL; -- an executable statement that specifies inaction END LOOP;