Chapter 3. Conditional and Sequential Logic

Beginner

Q:

3-1.

A classic typo in the world of PL/SQL: the “END” is glommed together with the “IF”. You need a space in between:

END IF;

Q:

3-2.

Another classic typo in the world of PL/SQL: when you write an ELSE-IF clause, you must drop the “E” at the end of “ELSE”, as in:

ELSIF

Q:

3-3.

Yet another classic typo in the world of PL/SQL: when you write an ELSE clause, you do not provide a THEN after the ELSE. Just the ELSE, ma’am.

Q:

3-4.

It’s always a good idea to minimize the levels of nested IFs (and loops as well). In this case, you can take advantage of the ELSIF clause as follows:

IF salary < 10000
THEN
   bonus := 2000;
ELSIF salary < 20000
THEN
   bonus := 1500;
ELSIF salary < 40000
THEN
   bonus := 1000;
ELSE
   bonus := 500;
END IF;

I hope you will agree that this code is more readable!

Q:

3-5.

Yes, the sorry_you_are_not_that_sick procedure executes. The ELSE statements executes if previous IF and ELSIF clauses all evaluate to FALSE or NULL.

Q:

3-6.

You can use the GOTO command, or you can RAISE an exception.

Q:

3-7.

You have to go to a label . A label in PL/SQL is an identifier (maximum of 30 characters, starts with a letter, etc.) that is surrounded by pairs of angle brackets, as shown here:

BEGIN
   GOTO skip_two_lines;
   democrats;
   republicans;

   <<skip_two_lines>>
   try_the_new_party;

In this block of code, you never get to the Democrats and the Republicans (as if they can be avoided). Instead, you skip right to the New Party. If that interests you, check it out at www.newparty.org ...

Get Oracle PL/SQL Programming: A Developer's Workbook now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.