El documento describe diferentes tipos de ciclos en PL/SQL, incluyendo FOR, WHILE y LOOP. Explica cuándo usar cada uno y proporciona ejemplos de código anónimo PL/SQL para ilustrar cada tipo de ciclo. También asigna una tarea que implica crear varios PL anónimos usando diferentes ciclos.
2. Ciclos
Como parte de los lenguajes de programación
contamos con herramientas para tareas repetitivas,
para ello empleamos Ciclos o bucles. PL/SQL nos
ofrece los ciclos:
FOR
LOOP
WHILE
3. ¿Como decidir cuándo usar cuál de estas
sentencias de proceso en ciclo repetitivo?
Ciclo numérico FOR: Se recomienda utilizarlo cuando se
tiene claro las veces de interacción necesarias para el
proceso de las sentencias que contendrá. Entre un valor
mínimo y un máximo (por ejemplo: de 1 a 10 veces). Y que
su ejecución no será interrumpida (finalizada) antes de
esas interacciones. Excepto claro cuando se genere una
excepción.
Used cuenta con el script:
Script_curso_PLSQL_Basico_m3_01.sql
Seleccione de dicho script el PL anónimo: ‘For como ciclo
controlado’. Cópielo y péguelo a su herramienta para
ejecución de SQL y PL/SQL.
Analíselo y ejecútelo.
4. --Pl/SQl anónimo: For como ciclo controlado
--Curso:
PL/SQL Básico
--Script:
Script_curso_PLSQL_Basico_m3_01
--Objetivo:
Instruir a los participantes del curso en el uso de FOR como ciclo
controlado.
--Autor:
Byron Quisquinay
--Fecha Elaboración: 16/12/2013
--Versión del script: 01
declare
begin
for ciclo_for in 1..10 loop
begin
dbms_output.put_line(ciclo_for);
end;
end loop; --ciclo_for
end;
5. Ciclo condicional WHILE
Se podría emplear cuando no se tiene conocimiento de
interacciones repetitivas que se requieren para las
sentencias que contendrá el ciclo. Cuando se requiere
una finalización condicionada de las interacciones del
ciclo y que no se ejecute ni una vez más según la
condición.
De su Script para el módulo 2 copie y peque el PL
anónimo: “While ciclo condicional.”.
Analícelo y ejecútelo
6. --Pl/SQl anónimo: While ciclo condicional.
--Curso:
PL/SQL Básico
--Script:
Script_curso_PLSQL_Basico_m3_01
--Objetivo:
Instruir a los participantes del curso en el uso de While como ciclo condicionado.
--Autor:
Byron Quisquinay
--Fecha Elaboración: 16/12/2013
--Versión del script: 01
declare
lv_valor_incremental number(1):= 1;
lc_valor_maximo CONSTANT number(1):= 5;
begin
-- Loop While lv_valor_incremental <= lc_valor_maximo
while (lv_valor_incremental <= lc_valor_maximo) loop
begin
dbms_output.put_line(lv_valor_incremental);
lv_valor_incremental := lv_valor_incremental + 1;
end;
end loop; -- Loop While lv_valor_incremental <= lc_valor_maximo
end;
7. Ciclo Loop
Se podría emplear cuando no se tiene conocimiento de
interacciones repetitivas que se requieren para las
sentencias que contendrá el ciclo. Cuando se requiere
una finalización temprana del mismo y cuando se debe
de ejecutar al menos una vez.
De su Script para el módulo 2 copie y peque el PL
anónimo: “Loop ciclo condicional de ejecución
condicionada y ejecutado al menos una vez.”.
Analícelo y ejecútelo.
8. --Pl/SQl anónimo: Loop ciclo condicional de ejecución condicionada y ejecutado al menos una vez.
--Curso:
PL/SQL Básico
--Script:
Script_curso_PLSQL_Basico_m3_01
--Objetivo:
Instruir a los participantes del curso en el uso de While como ciclo condicionado.
--Autor:
Byron Quisquinay
--Fecha Elaboración: 16/12/2013
--Versión del script: 01
declare
lv_fecha_condicion date := sysdate+1;
lv_fecha_evaluar date := sysdate;
begin
-- Loop While lv_valor_incremental <= lc_valor_maximo
Loop
begin
dbms_output.put_line('Es: '||lv_fecha_evaluar||' Igual a: '||lv_fecha_condicion);
--Evaluación para la finalización del ciclo, si la fecha evaluada no es igual a la necesaria para la ejecución del
ciclo, entonces finalícelo.
if (lv_fecha_evaluar != lv_fecha_condicion) then
exit;
end if;
end;
end loop; -- Loop While lv_valor_incremental <= lc_valor_maximo
end;
9. Ejercitándonos un poco…
Modifique el PL anónimo del ciclo FOR para que de 1 a
30 despliegue Sysdate + la variable del control del
ciclo.
Modifique el PL anónimo del ciclo While para que
tenga la condición de fecha evaluada y fecha condición
del ciclo LOOP y que muestre el texto empleado del
ciclo LOOP.
Realice cambios al PL anónimo del ciclo loop para que
imprima números del 1 al 25.
10. Tarea del Módulo 3
PL anónimo 1: Construya un PL/SQL anónimo que de 1 a 5
muestre add_months(sysdate, iteracción de ciclo) y despliegue
como salida del script el resultado de esa adición de meses a la
fecha del Sistema en donde reside la Base de Datos.
PL anónimo 2: La solución del apartado anterior, esta vez con
ciclo While.
PL anónimo 3: ahora con ciclo LOOP.
Cree un PL anónimo que: Bien, primero antes del PL inserte dos
productos más en su catálogo de productos de tarea 4 del
Módulo 1, además, inserte tres detalles más para la factura del
primer módulo con distintos códigos de producto, ahora haga un
ciclo FOR que vaya de 1 a la cantidad de datos en el detalle,
dentro del ciclo, vaya de detalle en detalle buscando el precio
para el producto y que actualice el total en base a la cantidad de
producto.
11. Tabla de Valoración para la tarea
Elemento Entregado
Puenteo
PL anónimo 1
20
PL anónimo 2
5
PL anónimo 3
5
PL anónimo 4
70