O que são loops?
Os loops permitem que uma determinada parte do código em um programa seja executada pelo número de vezes desejado.
Neste tutorial, veremos o conceito de loop em PL / SQL e o fluxo de controle em loops. Você vai aprender-
- Introdução ao conceito de loops
- Declarações de controle de loop
- Tipos de Loop em PL / SQL
- Declaração de Loop Básico
- Rotulagem de Loops
Introdução ao conceito de loops
O conceito de loops fornece a seguinte vantagem na codificação.
- Reutilização de código
- Tamanho de código reduzido
- Fluxo de controle fácil
- Complexidade Reduzida
O diagrama abaixo mostra o conceito de loop de forma pictórica
No diagrama acima, a condição do loop será verificada e, enquanto a condição do loop for satisfeita, o bloco de execução será executado.
Em cada iteração, a variável do contador de loop que realmente decide a condição do loop deve ser modificada para fazer o controle sair do loop. Em alguns casos, esta variável de contador de loop é um operador de incremento / decremento para uma contagem predefinida e, em alguns casos, é uma condição de pesquisa que continua executando o bloco até satisfazê-lo.
Declarações de controle de loop
Antes de aprender o conceito de loops, é obrigatório aprender as instruções de controle de loop. As instruções de controle de loop são aquelas que realmente controlam o fluxo de execução dentro do loop. Abaixo está a descrição detalhada sobre as instruções de controle do loop.
PROSSEGUIR
Essa palavra-chave envia uma instrução ao mecanismo PL / SQL que sempre que o mecanismo PL / SQL encontrar essa palavra-chave dentro do loop, ele ignorará o código restante no bloco de execução do código e a próxima iteração iniciará imediatamente. Isso será usado principalmente se o código dentro do loop quiser ser ignorado para certos valores de iteração.
SAIR / SAIR QUANDO
Essa palavra-chave envia uma instrução ao mecanismo PL / SQL que sempre que o mecanismo PL / SQL encontrar essa palavra-chave, ele sairá imediatamente do loop atual. Se o mecanismo PL / SQL encontrar EXIT em um loop aninhado, ele sairá do loop em que foi definido, ou seja, em um loop aninhado, fornecer EXIT no loop interno só sairá do controle do loop interno, mas não do loop externo. 'EXIT WHEN' é seguido por uma expressão que fornece um resultado booleano. Se o resultado for TRUE, o controle SAIRÁ.
VAMOS PARA
Esta instrução irá transferir o controle para a instrução rotulada ("GOTO
- A transferência de controle pode ser feita apenas dentro dos subprogramas.
- A transferência de controle não pode ser feita da parte de tratamento de exceções para a parte de execução
O uso desta instrução não é recomendado a menos que não haja outras alternativas, pois a rastreabilidade do controle de código será muito difícil no programa devido à transferência de controle de uma parte para outra.
Tipos de Loop em PL / SQL
PL / SQL fornece os seguintes três tipos de loops
- Declaração de loop básico
- Para declaração de loop
- Instrução de loop While
Declaração de Loop Básico
Essa instrução de loop é a estrutura de loop mais simples em PL / SQL. O bloco de execução começa com a palavra-chave 'LOOP' e termina com a palavra-chave 'END LOOP'.
A condição de saída deve ser fornecida dentro deste bloco de execução para que o controle saia do loop.
É necessário que a palavra-chave EXIT seja fornecida explicitamente na parte de execução para sair do loop.
LOOPExplicação da sintaxe:END LOOP;
- Na sintaxe acima, a palavra-chave 'LOOP' marca o início do loop e 'END LOOP' marca o fim do loop.
- O bloco de execução contém todo o código que precisa ser executado, incluindo a condição EXIT.
- A parte de execução pode conter qualquer instrução de execução.
Nota: A instrução de loop básico sem palavra-chave EXIT será um INFINITE-LOOP que nunca parará.
Exemplo 1 : Neste exemplo, vamos imprimir um número de 1 a 5 usando a instrução de loop básica. Para isso, executaremos o seguinte código.
DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/
Explicação do código:
- Linha de código 2 : Declarando a variável 'a' como tipo de dados 'NUMBER' e inicializando-a com o valor '1'.
- Linha de código 4 : Imprimindo a instrução "Programa iniciado".
- Linha de código 5: a palavra-chave 'LOOP' marca o início do loop.
- Linha de código 6: Imprime o valor de 'a'.
- Linha de código 7: aumenta o valor de 'a' em +1.
- Linha de código 8: verifica se o valor de 'a' é maior que 5.
- Linha de código 9: a palavra - chave 'END LOOP' marca o fim do bloco de execução.
- O código da linha 6 à linha 8 continuará a ser executado até que 'a' alcance o valor 6, pois a condição retornará TRUE e o controle SAIRÁ do loop.
- Linha de código 10: Imprimindo a declaração "Programa concluído"
Rotulagem de Loops
Em PL / SQL, os loops podem ser rotulados. O rótulo deve ser colocado entre "<<" e ">>". A rotulagem de loops, particularmente em códigos de loop aninhados, fornecerá mais legibilidade. O rótulo pode ser fornecido no comando EXIT para sair desse loop específico. Usando rótulo, o controle pode ser feito para sair diretamente do loop externo dos loops aninhados de qualquer lugar dentro dos loops, dando o comando exit seguido pelo rótulo do loop externo.
<Explicação da sintaxe:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- Na sintaxe acima, o loop de saída possui mais um loop dentro dele.
- O '<
>' e '< >' são os rótulos desses loops.
Exemplo 1 : Neste exemplo, vamos imprimir um número começando em 1 usando a instrução de loop Basic. Cada número será impresso tantas vezes quanto seu valor. O limite superior da série é fixado na parte de declaração do programa. Vamos aprender como podemos usar o conceito de etiqueta para conseguir isso. Para isso, vamos executar o seguinte código
DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop» LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/
Explicação do código:
- Linha de código 2-3 : Declarando a variável 'a' e 'b' como tipo de dados 'NUMBER'.
- Linha de código 4 : Declarando a variável 'limite superior' como tipo de dados 'NÚMERO' com valor '4'
- Linha de código 6 : Imprimindo a instrução "Programa iniciado".
- Linha de código 7: o loop externo foi rotulado como "outer_loop"
- Linha de código 9: O valor de 'a' é incrementado em 1.
- Linha de código 11: o loop interno foi rotulado como "loop_ interno".
- Linha de código 13: SAÍDA da condição que verifica se o valor 'a' é maior que o valor 'limite superior'. Do contrário, ele irá mais longe; do contrário, ele sairá do loop externo diretamente.
- Linha de código 14: Imprimindo o valor de 'b'.
- Linha de código 15: aumenta o valor de 'b' em +1.
- Linha de código 16: condição de SAÍDA que verifica se o valor de 'b' é maior que 'a'. Nesse caso, ele sairá do controle do loop interno.
- Linha de código 14: Imprimindo a declaração "Programa concluído"
Resumo
Laço | Loop Básico |
Critério de saída | Sai quando encontra a palavra-chave 'EXIT' na parte de execução |
Uso | Bom para usar quando a saída não é baseada em nenhuma condição particular. |