Loops

Top  Previous  Next

Loops

DECLARE

v_loop_cnt NUMBER(3);

BEGIN

  LOOP

     DBMS_OUTPUT.PUT_LINE( Loop || v_loop_cnt);

     v_loop_cnt := v_loop_cnt + 1;

     EXIT WHEN v_loop_cnt >= 10;

  END LOOP;

END;

DEFINE VARIABLE v_loop_cnt AS INTEGER.

REPEAT:

  DISPLAY "Loop " + string(v_loop_cnt).

  v_loop_cnt = v_loop_cnt + 1.

  IF v_loop_cnt >= 10 THEN LEAVE.

END.

 

Note that Progress does not auto convert v_loop_cnt to character when concatenating with Loop that is why we need function string() in Progress. DBMS_OUTPUT does convert v_loop_cnt to string.  It is good practice to do explicit conversion any way.

 

DECLARE

v_loop_cnt NUMBER(3) := 0;

BEGIN

WHILE (v_loop_cnt < 10 )

LOOP

   DBMS_OUTPUT.PUT_LINE( Loop || v_loop_cnt);

   v_loop_cnt := v_loop_cnt + 1;

END LOOP;

DBMS_OUTPUT.PUT_LINE( Loop End.);

END;

DEFINE VARIABLE v_loop_cnt AS INTEGER.

REPEAT WHILE v_loop_cnt < 10:

DISPLAY "Loop " + string(v_loop_cnt).

   v_loop_cnt = v_loop_cnt + 1.

END.

DISPLAY "Loop End.".

 

BEGIN

FOR v_loop_cnt IN 1..10

LOOP

   DBMS_OUTPUT.PUT_LINE( Loop || v_loop_cnt);

END LOOP;

END;

DEFINE VARIABLE v_loop_cnt AS INTEGER.

DO v_loop_cnt = 1 TO 10:

DISPLAY "Loop " + string(v_loop_cnt).

END.

 

Note: In Oracle numeric FOR LOOP automatically declares and initializes the counter variable. In Progress you have to define it. Thus in Oracle you can not reference counter outside the loop.