PL/SQL has four basic looping (or iterative) structures: the simple loop, the FOR loop, the cursor-based FOR loop, and the WHILE loop; these repeatedly execute a block of code. There are three things to worry about when designing a loop:
How (or whether) the loop terminates
When the test for termination takes place
Whether the type of loop is suited to the particular task at hand
If you know the number of times a loop must execute (for example, to process the months in a year), you can be reasonably confident that a FOR loop is the best structure. If you don’t know the number in advance (for example, the number of records in a table), you’re probably better off using a WHILE loop. This chapter tests your ability to make these kinds of decisions.
What are the different kinds of loops available in PL/SQL?
How do you stop a simple loop from continuing?
Why is the following form of a simple loop called an infinite loop?
DECLARE myDate DATE; BEGIN LOOP myDate := SYSDATE; END LOOP; END;
How many times does the body of the following loop execute?
FOR year_index IN 1990 .. 1999 LOOP calc_sales (year_index); END LOOP;
Rewrite the following loop so that you do not use a loop at all:
FOR i IN 1 .. 2 LOOP IF i = 1 THEN give_bonus (president_id, 2000000); ELSIF i = 2 THEN give_bonus (ceo_id, 5000000); END IF; END LOOP;
How many times are the first_year and last_year functions executed in the following loop?
FOR yearnum IN first_year (company_id => 1056) .. ...