En Oracle PL/SQL, la declaración WHILE LOOP ejecuta el código escrito entre WHILE LOOP y END LOOP hasta que la condición es verdadera. A continuación, ofrezco algunos ejemplos de la declaración WHILE LOOP de Oracle.
Sintaxis
WHILE logical_condition LOOP -- some PL/SQL code END LOOP;
Oracle WHILE LOOP Ejemplos
1. Bucle 10 veces e imprima la tabla
En el siguiente ejemplo, WHILE LOOP ejecutará las declaraciones hasta que el valor de la variable n_num sea menor o igual a 10. Imprimirá la tabla de 2 incrementando el valor de la variable n_num con 1 para cada iteración del ciclo.
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; /
Salida:
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.
No olvides incrementar el valor de la variable n_num, para que pueda llegar hasta 10, de lo contrario será un ciclo infinito.
2. Para hacer un bucle hasta que el valor de la variable booleana sea VERDADERO
En el siguiente ejemplo, se repetirá hasta que el valor de la variable booleana b_run sea VERDADERO e imprimirá el valor de la variable n_num incrementándolo con 1 para cada iteración y cuando el valor de la variable n_num sea mayor que 5, establecerá la variable b_run en FALSO , para que WHILE LOOP pueda terminar su trabajo.
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; /
Salida:
1 Times 2 Times 3 Times 4 Times 5 Times PL/SQL procedure successfully completed.
Para esto también, no olvide establecer el valor de la variable b_run en FALSO, de lo contrario será un bucle infinito. También puede escribir la salida; en lugar de b_run :=FALSO; instrucción para salir del bucle .
Ver también:
- Oracle FOR LOOP REVERSE Ejemplo
- Programa PL/SQL para imprimir detalles de empleados