A sintaxe do FOR Loop é:
| FOR loop_counter IN [REVERSE] lowest_number..highest_number LOOP {.statements.} END LOOP; |
Você deve usar o FOR Loop quando quiser executar o mesmo código um determinado número de vezes.
Veja um exemplo:
| DECLARE Lcntr integer; LCalc integer; BEGIN DBMS_OUTPUT.put_line ('Lcntr LCalc'); DBMS_OUTPUT.put_line ('----- -----'); FOR Lcntr IN 1..20 LOOP LCalc := Lcntr * 31; DBMS_OUTPUT.put_line (lpad(Lcntr,5,'0') || ' ' || lpad(LCalc,5,'0')); END LOOP; END; |
| Resultado Lcntr LCalc ----- ----- 00001 00031 00002 00062 00003 00093 00004 00124 00005 00155 00006 00186 00007 00217 00008 00248 00009 00279 00010 00310 00011 00341 00012 00372 00013 00403 00014 00434 00015 00465 00016 00496 00017 00527 00018 00558 00019 00589 00020 00620 |
Este exemplo fará o Loop 20 vezes. O contador será iniciado em 1 e irá parar no 20.
O FOR Loop também pode ser usado de forma decrescente.
Veja um exemplo:
| DECLARE Lcntr integer; LCalc integer; BEGIN DBMS_OUTPUT.put_line ('Lcntr LCalc'); DBMS_OUTPUT.put_line ('----- -----'); FOR Lcntr IN REVERSE 1..15 LOOP LCalc := Lcntr * 31; DBMS_OUTPUT.put_line (lpad(Lcntr,5,'0') || ' ' || lpad(LCalc,5,'0')); END LOOP; END; |
| Resultado Lcntr LCalc ----- ----- 00015 00465 00014 00434 00013 00403 00012 00372 00011 00341 00010 00310 00009 00279 00008 00248 00007 00217 00006 00186 00005 00155 00004 00124 00003 00093 00002 00062 00001 00031 |
Este comando fará o Loop 15 vezes. O contador será iniciado em 15 e irá parar no 1.