sql >> Base de Datos >  >> RDS >> Oracle

Oracle WHILE LOOP Ejemplo

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