Expert

2-22.

This block uses a FOR loop that has one way in, but two ways out:

FOR yearnum IN 1 .. years_in
LOOP
   show_profits (yearnum);
   IF yearnum > 10
   THEN
      EXIT;
   END IF;
END LOOP;

Which of the following loops provides a revised implementation of that FOR loop that has just one way in and one way out and that is logically equivalent to the original?

  1. FOR yearnum IN 1 .. 11
    LOOP
       show_profits (yearnum);
    END LOOP;
  2. FOR yearnum IN 1 .. 10
    LOOP
       show_profits (yearnum);
    END LOOP;
  3. FOR yearnum IN 1 .. LEAST (years_in, 11)
    LOOP
       show_profits (yearnum);
    END LOOP;
  4. FOR yearnum IN 1 .. LEAST (years_in, 11)
    LOOP
       show_profits (yearnum);
       EXIT WHEN yearnum > years_in;
    END LOOP;

2-23.

How many times does the following WHILE loop execute?

DECLARE
   end_of_analysis BOOLEAN := FALSE;

   CURSOR analysis_cursor
      IS SELECT ...; /* Something that returns a few rows. */

   analysis_rec analysis_cursor%ROWTYPE;

   next_analysis_step NUMBER;

   PROCEDURE get_next_record (step_out OUT NUMBER) IS
   BEGIN
      FETCH analysis_cursor INTO analysis_rec;
      IF analysis_rec.status = 'FINAL'
      THEN
         step_out := 1;
      ELSE
         step_out := 0;
      END IF;
   END;

BEGIN
   OPEN analysis_cursor;
   WHILE NOT end_of_analysis
   LOOP
      get_next_record (next_analysis_step);
      IF analysis_cursor%NOTFOUND AND
         next_analysis_step IS NULL
      THEN
         end_of_analysis := TRUE;
      ELSE
         perform_analysis;
      END IF;
   END LOOP;
END;

2-24.

Select the type of loop (FOR, WHILE, simple) appropriate to implement the following requirement: set the status of each company to closed for each company whose ID is defined as a ...

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.