#

| Chapter 1 Oracle PL/SQL Language Pocket Reference |

## 1.6 Conditional and Sequential Control

PL/SQL includes conditional (IF) structures as well as sequential control (GOTO, NULL) constructs.

### 1.6.1 Conditional Control Statements

#### 1.6.1.1 IF-THEN combination

>     IF condition THEN
>        executable statement(s)
>     END IF;

For example:

>     IF caller_type = 'VIP' THEN
>        generate_response('GOLD');
>     END IF;

#### 1.6.1.2 IF-THEN-ELSE combination

>     IF condition THEN
>        TRUE sequence_of_executable_statement(s)
>     ELSE
>        FALSE/NULL sequence_of_executable_statement(s)
>     END IF;

For example:

>     IF caller_type = 'VIP' THEN
>        generate_response('GOLD');
>     ELSE
>        generate_response('BRONZE');
>     END IF;

#### 1.6.1.3 IF-THEN-ELSIF combination

>     IF condition-1 THEN
>        statements-1
>     ELSIF condition-N THEN
>        statements-N
>     [ELSE
>        else statements]
>     END IF;

For example:

>     IF caller_type = 'VIP' THEN
>        generate_response('GOLD');
>     ELSIF priority_client THEN
>        generate_response('SILVER');
>     ELSE
>        generate_response('BRONZE');
>     END IF;

### 1.6.2 Sequential Control Statements

The GOTO statement performs unconditional branching to a named label. It should be used rarely. At least one executable statement must follow the label (the NULL statement can be this necessary executable statement). The format of a GOTO statement is:

GOTO label_name;

The format of the label is:

<<label_name>>

There are a number of scope restrictions on where a GOTO can branch control. A GOTO:

- Can branch out of an IF statement, LOOP, or sub-block

- Cannot branch into an IF statement, LOOP, or sub-block

- Cannot branch from one section of an IF statement to another (from the IF/THEN section to the ELSE section is illegal)

- Cannot branch into or out of a subprogram

- Cannot branch from the exception section to the executable section of a PL/SQL block

- Cannot branch from the executable section to the exception section of a PL/SQL block, although a RAISE does this

The NULL statement is an executable statement that does nothing. It is useful when an executable statement must follow a GOTO label or to aid readability in an IF-THEN-ELSE structure. For example:

>     IF :report.selection = 'DETAIL' THEN
>        exec_detail_report;
>     ELSE
>        NULL;
>     END IF;

1.5 Variables and Program Data |  | 1.7 Loops

Copyright (c) 2000 O'Reilly & Associates. All rights reserved.