Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Exemplo de LOOP Oracle WHILE


No Oracle PL/SQL, a instrução WHILE LOOP executa o código escrito entre WHILE LOOP e END LOOP até que a condição seja verdadeira. Abaixo, estou dando alguns exemplos para a instrução WHILE LOOP do Oracle.

Sintaxe

WHILE logical_condition LOOP
-- some PL/SQL code
END LOOP;

Exemplos de WHILE LOOP do Oracle

1. Faça um loop 10 vezes e imprima a tabela


No exemplo a seguir, WHILE LOOP executará as instruções até que o valor da variável n_num seja menor ou igual a 10. Ele imprimirá a tabela de 2 incrementando o valor da variável n_num com 1 para cada iteração do loop.
SET SERVEROUTPUT ON;
DECLARE
   n_num NUMBER;
   n_table number := 2;
BEGIN
   n_num := 1;
   WHILE n_num <= 10
   LOOP
      DBMS_OUTPUT.put_line ('2 x ' || n_num || ' = '||(n_table * n_num));
      n_num := n_num + 1;
   END LOOP;
END;
/

Saída:

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20
PL/SQL procedure successfully completed.

Não esqueça de incrementar o valor da variável n_num, para que possa chegar a 10, senão será um loop infinito.

2. Para fazer um loop até que o valor da variável booleana seja TRUE


No exemplo a seguir, ele fará um loop até que o valor da variável booleana b_run seja TRUE e imprimirá o valor da variável n_num incrementando-o com 1 para cada iteração e quando o valor da variável n_num for maior que 5, definirá a variável b_run como FALSE , para que WHILE LOOP possa terminar seu trabalho.
SET SERVEROUTPUT ON;
DECLARE
   n_num NUMBER;
   b_run BOOLEAN := TRUE;
BEGIN
   n_num := 1;

   WHILE b_run
   LOOP
      DBMS_OUTPUT.put_line (n_num || ' Times');
      n_num := n_num + 1;
      IF n_num > 5
      THEN
         b_run := FALSE;
      END IF;
   END LOOP;
END;
/

Saída:

1 Times
2 Times
3 Times
4 Times
5 Times
PL/SQL procedure successfully completed.

Para isso também, não se esqueça de definir o valor da variável b_run para FALSE, senão será um loop infinito. Você também pode escrever a saída; em vez de b_run :=FALSE; instrução para sair do loop .

Veja também:

  • Exemplo do Oracle FOR LOOP REVERSE
  • Programa PL/SQL para imprimir detalhes do funcionário