Migrating from 9i to 11g – CONTINUE
Posted by: Lakshmi Venkatesh
Feature available from Oracle 11g
This is used to control program flow within the loop. With earlier versions of Oracle we either need to use IF condition or EXIT from the loop. CONTNUE / CONTINUE WHEN can be used.
How is it currently done?
Oracle 9i
SET SERVEROUTPUT ON SIZE 100000
DECLARE
v_item_num NUMBER := 0;
BEGIN
WHILE ( v_item_num < 200)
LOOP
LOOP
v_item_num := v_item_num + 5;
IF MOD(v_item_num,25) = 0 THEN
EXIT;
END IF;
END LOOP;
Dbms_output.put_line(‘Item number = ‘ || v_item_num);
END LOOP;
END;
/
OUTPUT
Item number = 25
Item number = 50
Item number = 75
Item number = 100
Item number = 125
Item number = 150
Item number = 175
Item number = 200
PL/SQL procedure successfully completed.
Oracle 11g
CONTINUE WHEN
SET SERVEROUTPUT ON SIZE 100000
DECLARE
v_item_num NUMBER := 0;
BEGIN
WHILE ( v_item_num < 200)
LOOP
v_item_num := v_item_num + 5;
CONTINUE WHEN MOD(v_item_num,25) 0;
Dbms_output.put_line(‘Item number = ‘ || v_item_num);
END LOOP;
END;
/
OUTPUT
Item number = 25
Item number = 50
Item number = 75
Item number = 100
Item number = 125
Item number = 150
Item number = 175
Item number = 200
PL/SQL procedure successfully completed.
CONTINUE
SET SERVEROUTPUT ON SIZE 100000
DECLARE
v_item_num NUMBER := 0;
BEGIN
WHILE ( v_item_num < 200)
LOOP
v_item_num := v_item_num + 5;
IF MOD(v_item_num,25) 0 THEN
CONTINUE;
END IF;
Dbms_output.put_line(‘Item number = ‘ || v_item_num);
END LOOP;
END;
/
OUTPUT
Item number = 25
Item number = 50
Item number = 75
Item number = 100
Item number = 125
Item number = 150
Item number = 175
Item number = 200
PL/SQL procedure successfully completed.




