Oracle PL/SQL FOR LOOP com exemplo
O que é Loop For?
A instrução “FOR LOOP” é mais adequada quando você deseja executar um código por um número conhecido de vezes, em vez de com base em outras condições.
Neste loop, o limite inferior e o limite superior serão especificados e enquanto a variável do loop estiver entre esse intervalo, o loop será executado.
A variável do loop é autoincremental, portanto nenhuma operação de incremento explícita é necessária neste loop. A variável de loop não precisa ser declarada, pois é declarada implicitamente.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Explicação da sintaxe:
- Na sintaxe acima, a palavra-chave 'FOR' marca o início do loop e 'END LOOP' marca o fim do loop.
- A variável de loop é avaliada sempre antes de executar a parte de execução.
- O bloco de execução contém todo o código que precisa ser executado. A parte de execução pode conter qualquer instrução de execução.
- O loop_variable é declarado implicitamente durante a execução de todo o loop, e o escopo deste loop_variable estará apenas dentro deste loop.
- Se a variável do loop estiver fora do intervalo, o controle sairá do loop.
- O loop pode funcionar na ordem inversa adicionando a palavra-chave 'REVERSE' antes de lower_limit.
Exemplo 1: Neste exemplo, vamos imprimir o número de 1 a 5 usando a instrução do loop FOR. Para isso, executaremos o seguinte código.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Explicação do código:
- Linha de código 2: Imprimindo a declaração “Programa iniciado”.
- Linha de código 3: A palavra-chave 'FOR' marca o início do loop e loop_variable 'a' é declarado. Agora terá o valor de 1 a 5
- Linha de código 5: Imprime o valor de 'a'.
- Linha de código 6: A palavra-chave 'END LOOP' marca o fim do bloco de execução.
- O código da linha 5 continuará a ser executado até que 'a' atinja o valor 6, pois a condição falhará e o controle SAIRÁ do loop.
- Linha de código 7: Imprimindo a declaração “Programa concluído”
Loops aninhados
As instruções de loop também podem ser aninhadas. O loop externo e interno podem ser de diferentes tipos. No loop aninhado, para cada valor de iteração do loop externo, o loop interno será executado totalmente.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Explicação da sintaxe:
- Na sintaxe acima, o loop externo possui mais um loop dentro dele.
- Os loops podem ser de qualquer tipo e a parte da funcionalidade de execução é a mesma.
Exemplo 1: Neste exemplo, vamos imprimir o número de 1 a 3 usando a instrução do loop FOR. Cada número será impresso tantas vezes quanto seu valor. Para isso, executaremos o seguinte código.
DECLARE b NUMBER; BEGIN dbms output put line(‘Program started' ); FOR a IN 1..3 LOOP b:=1; WHILE (a>=b) LOOP dbms output put line(a); b:=b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed' ); END; /
Explicação do código:
- Linha de código 2: Declarando a variável 'b' como tipo de dados 'NUMBER'.
- Linha de código 4: Imprimindo a declaração “Programa iniciado”.
- Linha de código 5: A palavra-chave 'FOR' marca o início do loop e loop_variable 'a' é declarado. Agora terá o valor de 1 a 3
- Linha de código 7: Redefinindo o valor de 'b' para '1' a cada vez.
- Linha de código 8: Interior loop while verifica a condição a>=b.
- Linha de código 10: Imprime o valor de 'a' desde que a condição acima seja satisfeita.
- Linha de código 14: Imprimindo a declaração “Programa concluído”
Resumo
laço | Loop FOR |
---|---|
Critério de saída | Saia quando o contador atingir o limite |
Uso | Bom para usar quando a contagem de loops a serem executados é conhecida. |