Database Programming with PL/SQL
4-5: Iterative Control: Nested Loops
Practice Activities
Try It / Solve It
1. Write a PL/SQL block to produce a list of available vehicle license plate numbers. These numbers
must be in the following format: NN-MMM, where NN is between 60 and 65, and MMM is between
100 and 110. Use nested FOR loops. The outer loop should choose numbers between 60 and 65.
The inner loop should choose numbers between 100 and 110, and concatenate the two numbers
together.
DECLARE
v_num1 NUMBER(2);
v_num2 NUMBER(3);
BEGIN
FOR v_num1 in 60..65 LOOP
FOR v_num2 in 100..110 LOOP
DBMS_OUTPUT.PUT_LINE(v_num1 || '-' || v_num2);
END LOOP;
END LOOP;
END;
2. Modify your block from question 1 to calculate the sum of the two numbers on each iteration of the
inner loop (for example, 62-107 sums to 169), and exit from the OUTER loop if the sum of the two
numbers is greater than 172. Use loop labels. Test your modified code.
DECLARE
v_num1 NUMBER(2);
v_num2 NUMBER(3);
BEGIN
<<outerloop>>
FOR v_num1 in 60..65 LOOP
<<innerloop>>
FOR v_num2 in 100..110 LOOP
DBMS_OUTPUT.PUT_LINE(v_num1 + v_num2);
EXIT WHEN v_num1 + v_num2 > 172;
END LOOP;
END LOOP;
END;
1 Comments
Answer 2
ReplyDeleteHello Programmer, this answer required Loop labels, thank you
DECLARE
v_num1 NUMBER(2) := 59;
v_num2 NUMBER(3) := 100;
BEGIN
<>
LOOP
v_num1 := v_num1 + 1;
v_num2 := 100;
EXIT WHEN v_num1 > 65;
<>
LOOP
DBMS_OUTPUT.PUT_LINE(v_num1 || '-' || v_num2 || ' sums to ' || TO_NUMBER(v_num1 + v_num2));
v_num2 := v_num2 + 1;
EXIT WHEN v_num2 > 110;
EXIT outer_loop WHEN v_num1 + v_num2 > 172;
END LOOP inner_loop;
END LOOP outer_loop;
END;