ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Bloques PL/SQL


Enviado por   •  22 de Abril de 2022  •  Apuntes  •  1.842 Palabras (8 Páginas)  •  48 Visitas

Página 1 de 8

PROGRAMACION DE BASE DE DATOS

(PPT 1.4.1)

ESTRUCTURAS DE ITERACION (1.4.1)

LOOP O BUCLE ITERATIVO

  • La construcción de LOOP O BUCLE son un tipo de Estructura de Control de Flujo para poder repetir una o más sentencias ejecutables (SQL y PL/SQL) un número específico de veces en función de una o más condiciones especificadas.
  • Estas sentencias o bucles iterativos terminan automáticamente una vez que coinciden con una condición de salida válida o cuando se completa su ciclo de iteración.
  • Es obligatorio tener una condición de salida en un LOOP, de lo contrario, es infinito.
  • El comando EXIT se puede utilizar para terminar LOOPS. Un LOOP BÁSICO debe tener una salida.

[pic 1]

Existen distintos tipo tipos de BUCLES:

  • LOOP Simple: que realiza acciones repetitivas sin condiciones generales. Este Loop debe tener una condición de salida usando la cláusula EXIT.
  • FOR LOOP: se realizan acciones iterativas basadas en un contador.
  • WHILE loops: que realizan acciones iterativos basados ​​en una condición.

En la mayoría de las situaciones en las que se debe escribir un código en un loop, se puede lograr a partir de cualquiera de los tres tipos de LOOP, pero en ocasiones se termina con un número adicional de líneas de código que aumentan la complejidad y el mantenimiento del programa. Por lo tanto, siempre es mejor utilizar el tipo de bucle adecuado para la situación adecuada.

LOOP SIMPLE

  • La forma más simple es el LOOP SIMPLE (conocido como Básico), que encierra una serie de declaraciones entre las palabras reservadas LOOP y END LOOP. Cada vez que el flujo de ejecución llega a la instrucción END LOOP se devuelve el control a la sentencia LOOP correspondiente (al comienzo del loop) y se prepara para la siguiente iteración.
  • Un LOOP Simple permite la ejecución de sus sentencias al menos una vez, incluso si la condición de salida ya se cumple al entrar en el loop .
  • Sin la instrucción EXIT, el LOOP sería infinito. Se puede usar la sentencia EXIT para terminar el LOOP. El control pasa a la siguiente sentencia después de la sentencia END LOOP.
  • Si a la sentencia EXIT se agrega una Condición WHEN significa que el LOOP se ejecutará hasta que se cumpla la condición. Un loop básico puede contener múltiples sentencias EXIT, pero se recomienda tener solo un punto de salida.

El bloque del ejemplo muestra el valor de la variable v_x (se repite cinco veces) -> la condición de salida del LOOP es que el valor de esta variable sea mayor a 50.  Por cada iteración del LOOP, la variable v_x se aumenta en 10 y cuando sea mayor a 50 el control pasará a la sentencia que continúa después del END LOOP, en este caso se mostrará el mensaje: Después del EXIT, el valor de v_x es:  60.

[pic 2][pic 3][pic 4][pic 5]

El bloque del ejemplo INSERTA nuevas filas a la tabla UBICACIONES. La inserción de nuevas filas se efectuará 3 veces ya que el LOOP es controlado a través de la variable v_contador y cuando ésta sea mayor a 3 el control pasará a la sentencia que continúa después del END LOOP, en este caso se acaba el bloque.

[pic 6][pic 7][pic 8][pic 9][pic 10]

En el ejemplo, la sentencia SELECT obtiene el salario promedio, la identificación mínima de empleado y la identificación máxima de empleado. Estos dos último valores se usan para generar el loop, el que comenzará con el valor 100 (mínima identificación de empleado). Por cada iteración del loop, se aumenta en 1 el valor de esta variable y el loop se ejecutará hasta que el valor de v_id_min  se mayor al valor de la variable v_id_max (206) es decir, se ejecutará 107 veces.

Por cada iteración del loop, se actualiza el salario del empleado con identificación igual al valor que de la variable v_id_min que en cada iteración se aumenta en uno para “simular” la identificación del empleado. Además, el empleado debe tener un salario menor que el salario promedio para aumentarlo en 25%.

Se usa el atributo SQL%ROWCOUNT para saber si se realizó la actualización del salario del empleado que se está procesando, para mostrar como salida del bloque el total de empleados actualizados.

El bloque al final tiene ROLLBACK porque este mismo ejemplo se usa para explicar el buclé WHILE LOOP;

[pic 11][pic 12]

[pic 13][pic 14][pic 15]

WHITE LOOP

  • Repite una o más sentencias mientras la condición declara al comienzo del loop sea verdadera. La condición se evalúa al inicio de cada iteración. El ciclo termina cuando la condición es FALSE o NULL
  • En cada iteración, las sentencias se ejecutan y el control vuelve al comienzo del loop, verificándose la condición de control y, si es verdadera, se continúa con la siguiente iteración.
  • Si la condición de entrada al loop no se cumple no se ejecuta ninguna sentencia declarada dentro del loop y el control pasa a la siguiente sentencia del END LOOP.
  • A diferencia de los loops simples, en WHILE LOOP el programador solo debe administrar el valor de la variable de la condición ya que la salida del loop se realiza automáticamente.
  • En este tipo de loop, si la variable contador o la variable de la condición de entrada no se inicializa, el loop no se ejecutará ni una sola vez, ya que se trata de un tipo de "protección al comienzo del loop“.

Basado en el mismo bloque que se construyó con LOOP básico, ahora el ciclo iterativo es manejado usando WHILE LOOP. La condición ahora es evaluada al comienzo de cada iteración a través de la variable v_x. Cuando esta variable sea mayor a 50 el control pasará a la sentencia que continúa después del END LOOP, es decir, el bloque mostrará el mensaje: Después del EXIT, el valor de v_x es 60.

...

Descargar como (para miembros actualizados)  txt (10.4 Kb)   pdf (1.4 Mb)   docx (1.3 Mb)  
Leer 7 páginas más »
Disponible sólo en Clubensayos.com