Oracle PL/SQL FOR LOOP com exemplo
⚡ Resumo Inteligente
Oracle O laço FOR em PL/SQL executa um bloco de código um número conhecido de vezes, entre um limite inferior e um superior. A variável do laço é declarada implicitamente e se autoincrementa, portanto, nenhum contador manual é necessário, e a palavra-chave REVERSE permite que o laço conte de forma regressiva.
O que é um laço FOR?
A instrução “FOR LOOP” é mais adequada quando você deseja executar um código um número conhecido de vezes, em vez de com base em alguma outra condição.
Nesse laço, são especificados um limite inferior e um limite superior, e enquanto a variável do laço estiver dentro desse intervalo, o laço é executado.
A variável de loop é auto-incrementável, portanto, nenhuma operação de incremento explícita é necessária. 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:
- A palavra-chave 'FOR' marca o início do loop e 'END LOOP' marca o fim.
- A variável de loop é avaliada a cada iteração, antes da execução da parte do loop.
- O bloco de execução contém todo o código que precisa ser executado e pode conter qualquer instrução executável.
- A variável `loop_variable` é declarada implicitamente durante a execução do loop, e seu escopo se restringe ao interior do loop.
- Quando a variável do loop sai do intervalo estabelecido, o controle é encerrado no loop.
- O loop pode ser configurado para funcionar em ordem inversa adicionando a palavra-chave 'REVERSE' antes de lower_limit.
1 exemplo: Neste exemplo, imprimimos os números de 1 a 5 usando uma instrução de repetição FOR.
BEGIN dbms_output.put_line('Program started.'); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Explicação:
- Code linha 2: Exibição da mensagem "Programa iniciado".
- Code linha 3: A palavra-chave 'FOR' marca o início do laço e a variável de laço 'a' é declarada. Ela agora assume valores de 1 a 5.
- Code linha 5: Imprime o valor de 'a'.
- Code linha 6: A palavra-chave 'END LOOP' marca o fim do bloco de execução.
- A linha 5 continua a ser executada até que 'a' atinja o valor 6, momento em que a condição falha e o controle sai do loop.
- Code linha 7: Imprimir a mensagem "Programa concluído".
Loops aninhados
Instruções de laço também podem ser aninhadas. Os laços externo e interno podem ser de tipos diferentes. Em um laço aninhado, a cada iteração do laço externo, o laço interno é executado completamente.
LOOP --outer <execution block starts> LOOP --inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Explicação da sintaxe:
- O laço externo possui mais um laço dentro dele.
- Os loops podem ser de qualquer tipo, e a funcionalidade de execução é a mesma.
1 exemplo: Neste exemplo, imprimimos os números de 1 a 3 usando um laço FOR. Cada número é impresso tantas vezes quantas forem suas quantidades.
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; /
Code Explicação:
- Code linha 2: Declarando a variável 'b' como do tipo de dados 'NUMBER'.
- Code linha 4: Exibição da mensagem "Programa iniciado".
- Code linha 5: A palavra-chave 'FOR' marca o início do laço e a variável de laço 'a' é declarada. Ela agora assume valores de 1 a 3.
- Code linha 7: Redefinindo o valor de 'b' para '1' a cada vez.
- Code linha 8: O interior loop while verifica a condição a>=b.
- Code linha 10: Imprime o valor de 'a' desde que a condição acima seja satisfeita.
- Code linha 14: Imprimir a mensagem "Programa concluído".
Laço FOR e laço FOR INVERTIDO
Por padrão, um loop FOR conta de baixo para cima, do limite inferior para o limite superior. Adicionar a palavra-chave REVERSE faz com que ele conte de cima para baixo, enquanto continua contando.ping Os limites na mesma ordem. Ambas as formas são mostradas juntas abaixo para que a diferença fique clara.
| Contato | cabeçalho | Ordem dos valores |
|---|---|---|
| Crescente | PARA UM EM 1 .. 5 | 1, 2, 3, 4, 5 |
| Descendente | PARA UM EM REVERSO 1 .. 5 | 5, 4, 3, 2, 1 |
Observe que, mesmo com REVERSE, o limite inferior ainda é escrito antes do limite superior; apenas a direção da iteração muda. Para loops cuja contagem não é conhecida antecipadamente, o loop básico é a melhor escolha.





