curso de pl sql básico
TRANSCRIPT
Por: Byron Quisquinay
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
¿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.
--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;
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
--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;
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.
--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 delciclo, 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;
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.
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.
Tabla de Valoración para la tareaElemento Entregado Puenteo
PL anónimo 1 20
PL anónimo 2 5
PL anónimo 3 5
PL anónimo 4 70