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