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.

Oracle PL/SQL PARA LOOP

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.

Loops aninhados

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.

Loops aninhados

Loops aninhados

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.