Bucles While, For y Loop en PL/SQL

Hola a todos, hoy vamos a ver como funcionan los bucles o estructuras repetitivas en PL/SQL.

Como en la mayoría de lenguajes, tenemos estructuras repetitivas o bucles.

Tenemos el while y for, como en el resto de lenguajes. Pero en PL/SQL tenemos uno nuevo llamado loop, que lo vamos a ver.

While

Igual que en otros lenguajes, esta es su sintaxis:

Fíjate que en PL/SQL, se pone LOOP, en todos los tipos de bucles se pone LOOP.

Vamos a ver un pequeño ejemplo. Mostrar los números del 1 al 10.

 

For

Tiene esta sintaxis en PL/SQL:

Veamos un ejemplo:

 

La i es una variable local que solo se usa dentro del for, para decir que vaya de 1 a 10, lo hacemos asi: 1..10

Como siempre tenemos que poner Loop.

Si quieres que se inviertan los valores usamos reverse:

Tambien se suele usar cuando tenemos rowtypes:

Loop

La sintaxis de Loop en PL/SQL es:

La particularidad de Loop es que podemos poner la condición de salida donde queramos dentro del bucle con exit when, cuando se cumpla la condición saldrá del bucle.

 

Este tipo de bucles se suele utilizar para recorrer cursores, por ejemplo:

Te dejo un vídeo de mi canal donde usamos bucles:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

 

Compartir

4 comentarios

  1. fran

    hola,
    si quiero usar un for y no se cuantas filas hay, por ejemplo a la hora de imprimir un select, cómo le indico cunado debe pararse?

  2. Catalina Cano

    Esta es mi solucion:

    SET SERVEROUTPUT ON;

    DECLARE
    numero_inicial NUMBER := 1;
    limite CONSTANT NUMBER := 11;
    numero_final NUMBER := 9;
    i NUMBER := 1;
    temp i%type;
    BEGIN
    dbms_output.put_line(‘TABLAS DE MULTIPLICAR DEL ‘ || numero_inicial ||’ AL NUMERO ‘|| numero_final);
    dbms_output.put_line(‘FECHA: ‘|| sysdate);
    <> LOOP
    dbms_output.put_line(»);
    dbms_output.put(numero_inicial
    || ‘*’
    || i
    || ‘=’
    || numero_inicial * i
    || chr(9));
    temp:= numero_inicial+1;
    <> LOOP
    dbms_output.put(temp
    || ‘*’
    || i
    || ‘=’
    || temp * i
    || chr(9));

    temp:=temp+1;
    EXIT WHEN temp > numero_final;
    END LOOP tabla_dos;
    i := i + 1;
    EXIT WHEN i > limite;
    END LOOP tabla_inicial;
    END;

  3. Patty

    Esta genial tu post, mil gracias!!!!

  4. Roberto Descalzo

    Muy bien explicado.
    Muchas gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539