Anuncios en tutorial de programación PLSQL

jueves, 2 de diciembre de 2021

Sentencias de control en PL/SQL

En este artículo voy a mencionar las opciones que ofrece PLSQL para:

  1. Controlar las acciones a realizar dependiendo de una o varias condiciones.
  2. Controlar una secuencia de operaciones iterativa.
  3. Controlar la secuencia de ejecución del programa.
Sentencias de control PLSQL

Control condicional

Comando IF

Permite ejecutar unas sentencias u otras dependiendo de que se cumplan o no las condiciones indicadas en la sentencia.

    IF -- Condición THEN -- Sentencias
    ELSIF -- Condición THEN -- Sentencias
    ELSE -- Sentencias
    END IF;

Control de iteraciones

Comando LOOP

El bucle se ejecuta continuamente hasta que dentro del bucle se ejecuta la sentencia EXIT. Parece lógico pensar que dentro del bucle se debe incluir una sentencia IF para determinar cuando se debe salir del bucle.

    LOOP
      -- Sentencias
    END LOOP;

Comando WHILE

El bucle se ejecuta de forma continua mientra que la condición del WHILE sea verdadera. También se puede salir del bucle utilizando la sentencia EXIT.

    WHILE -- Condición
    LOOP
      -- Sentencias
    END LOOP;

Comando FOR

En el siguiente ejemplo el bucle se ejecutará 10 veces y la variable i se incrementará en una unidad en cada ejecución del bucle. También se puede salir del bucle utilizando la sentencia EXIT.

    FOR i IN 1..10
    LOOP
      -- Sentencias
    END LOOP;

Control secuencial

Comando GOTO

Este comando está en desuso y la mayoría de los programadores expertos recomienda que no se utilice. En el ejemplo que propongo, el primer conjunto de sentencias no se ejecutarían ya que el GOTO está diciendo que se reanude la ejecución desde la etiqueta X.

    GOTO X;
    -- Primer conjunto de sentencias
    << X >>
    -- Segundo comjunto de sentencias

Como os habréis dado cuenta el ejemplo propuesto carece de lógica, ¿para qué incluir un grupo de sentencias que nunca se va a ejecutar?, por lo que el comando GOTO siempre debe estar incluido dentro de un comando IF o de algún otro tipo de control condicional.

2 comentarios:

Joelvin dijo...

buen dia pepelu

actualmente me encuentro trabajando en un paquete con varios procedimiento, y se me es mecerario que cuando alguno de una excepcion este se tremine

JLPM dijo...

Joelvin,

Si durante la ejecución de un programa PL/SQL, se produce un excepción que no está controlada en el bloque de excepciones, el programa termina automáticamente.