Intermediate

Q:

2-7.

A REPEAT UNTIL loop executes its body and then checks to see if the condition for stopping execution is TRUE. You can implement a REPEAT UNTIL loop with the simple loop as follows:

LOOP
   ...
   EXIT WHEN <condition>;
END LOOP;

Q:

2-8.

This loop does not execute even once. When you use the REVERSE keyword, the year_index moves from highest to lowest value (the reverse of the normal order). However, the low value of the range must still be first, as shown here:

FOR year_index IN REVERSE 1990 .. 1999
LOOP
   calc_sales (year_index);
END LOOP;

Q:

2-9.

At first glance, you might think that a FOR loop would make the most sense (“for each…”). A FOR loop would be a mistake in this context, however, because there is also a conditional exit (under certain conditions, stop after 12 years). You should use a FOR loop only when you are going to iterate unconditionally through every value between the low- and high-range limits. Instead, use a simple or WHILE loop to satisfy this requirement.

Q:

2-10.

Since there is no conditional exit described in this requirement, you should use the cursor FOR loop.

Q:

2-11.

Use the WHILE loop, since there are conditions under which you do not want the loop body to execute even a single time.

Q:

2-12.

Do not use a generic loop index name (i); it makes the code less readable, and it looks unprofessional. In addition, the conditional EXIT from the FOR loop should be removed. Instead, use a FOR loop that iterates as follows:

FOR i IN 1 .. LEAST (76, total_count) LOOP ...

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

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.