EJEMPLOS

 LOOP BASICO

Inserción de registros en la tabla ARTICULOS donde el bucle finaliza al llegar al número de registro 50.

 

DECLARE

    var1 NUMBER := 42;

    var_tnombre VARCHAR2(50);

    var_ciudad VARCHAR2(50); 

    var_t VARCHAR2(10);  

 

BEGIN

    LOOP

        var_t := 'T' || var1;

       

        CASE var1

            WHEN 43 THEN

                var_tnombre := 'CLASIFICADORA';

                var_ciudad := 'MADRID';

            WHEN 44 THEN

                var_tnombre := 'PERFORADORA';

                var_ciudad := 'MALAGA';

            WHEN 45 THEN

                var_tnombre := 'LECTORA';

                var_ciudad := 'CACERES';

            WHEN 46 THEN

                var_tnombre := 'CONSOLA';

                var_ciudad := 'CACERES';

            WHEN 47 THEN

                var_tnombre := 'MEZCLADORA';

                var_ciudad := 'SEVILLA';

            WHEN 48 THEN

                var_tnombre := 'TERMINAL';

                var_ciudad := 'BARCELONA';

            WHEN 49 THEN

                var_tnombre := 'CINTA';

                var_ciudad := 'SEVILLA';

            ELSE

                var_tnombre := 'Articulo ' || var1;

                var_ciudad := 'Ciudad ' || var1;

        END CASE;

 

        INSERT INTO articulos (t, tnombre, ciudad) 

        VALUES (var_t, var_tnombre, var_ciudad);

 

        var1 := var1 + 1;

 

        IF var1 > 50 THEN

            EXIT;

        END IF;

    END LOOP;

END;

 

 


LOOP WHILE

Inserción de registros en la tabla CATEGORIA_HABIATCION donde el num_camas va aumentando, es decir, el primer resultado inicializa en 2 y va aumentando *2. El bucle finaliza en la posición 30 e inicia en el número 26.

DECLARE

    valor NUMBER := 26;

    num_camas NUMBER := 2; 

    categoria VARCHAR2(30);

 

BEGIN

    WHILE valor <= 30 LOOP

 

        IF MOD(valor, 2) = 0 THEN

            categoria := 'Habitacion Individual';

        ELSE

            categoria := 'Suite';

        END IF;

       

        INSERT INTO categoria_habitacion (IDC, CATEGORIA, NUM_CAMAS)

        VALUES (valor + 1, categoria, num_camas);

       

        num_camas := 2 * num_camas;

       

        valor := valor + 1;

    END LOOP;

    COMMIT; 

END;




LOOP FOR

Inserción de registros en la tabla COMPONENTES donde el bucle se ejecutara basándose en el rango que se le asigne al contador, es decir de la posición 7 a la 10. Terminando en al llegar al 10.

 

BEGIN

  FOR contador IN 7..10 LOOP

 

    INSERT INTO componentes (C, CNOMBRE, COLOR, PESO, CIUDAD)

    VALUES (

      'C' || contador,                   

      'X3A' || contador,          

      CASE WHEN MOD(contador, 2) = 0 THEN 'ROJO' ELSE 'AZUL' END,  

      contador * 100,

      CASE WHEN MOD(contador, 2) = 0 THEN 'MADRID' ELSE 'SEVILLA' END 

    );

  END LOOP;

  COMMIT; 

END;