Saltar la navegación

2.4.1.- Estructuras de control (II). Bucles

Ya que hemos visto las estructuras de control condicional, veamos ahora las estructuras de control iterativo.

Control iterativo.

Estas estructuras nos permiten ejecutar una secuencia de sentencias un determinado número de veces.

  • LOOP: La forma más simple es el bucle infinito, cuya sintaxis es:
    LOOP
         secuencia_de_sentencias;
    END LOOP;
    
    
  • EXIT: Con esta sentencia forzamos a un bucle a terminar y pasa el control a la siguiente sentencia después del bucle. Un EXIT no fuerza la salida de un bloque PL/SQL, sólo la salida del bucle.
    LOOP
         ...
         IF encontrado = TRUE THEN
              EXIT;
         END IF;
    END LOOP;
    DECLARE
      a integer :=1;
    BEGIN
      LOOP
        dbms_output.put_line(a);
        IF a>9 THEN
           EXIT;
        END IF;
        a:=a+1;
      END LOOP;
    END;
    /     


  • EXIT WHEN condicion: Fuerza a salir del bucle cuando se cumple una determinada condición.
    LOOP
         ...
         EXIT WHEN encontrado;
    END LOOP;
    DECLARE
      a integer :=1;
    BEGIN
      LOOP
        dbms_output.put_line(a);
        EXIT WHEN a>9;
        a:=a+1;
      END LOOP;
    END;
    /      
    
    
    
  • WHILE LOOP: Este tipo de bucle ejecuta la secuencia de sentencias mientras la condición sea cierta.
WHILE condicion LOOP
     Secuencia_de_sentencias;
END LOOP;
DECLARE
  a integer :=1;
BEGIN
  WHILE a<10 LOOP 
    dbms_output.put_line(a);  
    a:=a+1;
  END LOOP;
END;
/

  • FOR LOOP: Este bucle itera mientras el contador se encuentre en el rango definido.
FOR contador IN [REVERSE] limite_inferior..limite_superior LOOP
     Secuencia_de_sentencias;
END LOOP;
DECLARE
  a NUMBER;
BEGIN
FOR a IN 1..10 LOOP -- ascendente de uno en uno
  dbms_output.put_line(a);
END LOOP;
FOR a IN REVERSE 1..10 LOOP -- descendente de uno en uno
  dbms_output.put_line(a);
END LOOP;
END;
/

Bucle infinito es aquel ciclo que se repite de forma indefinida, ya que su condición para finalizar nunca se cumple o no tiene dicha condición

Autoevaluación

Pregunta

Al utilizar REVERSE en un bucle FOR, en el rango debemos poner el número mayor el primero y el menor el último.

Respuestas

Verdadero.

Falso.

Retroalimentación