0% encontró este documento útil (0 votos)
82 vistas24 páginas

Estructuras de Control en PL/SQL

Este documento describe las estructuras de control de flujo básicas en PL/SQL como IF, CASE y bucles. Explica cómo usar IF y CASE para realizar condicionales y proporciona ejemplos. También explica los bucles LOOP, WHILE y FOR y cómo usarlos para iterar sobre instrucciones. Finalmente, propone ejercicios para practicar el uso de estas estructuras de control.

Cargado por

Max75
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
82 vistas24 páginas

Estructuras de Control en PL/SQL

Este documento describe las estructuras de control de flujo básicas en PL/SQL como IF, CASE y bucles. Explica cómo usar IF y CASE para realizar condicionales y proporciona ejemplos. También explica los bucles LOOP, WHILE y FOR y cómo usarlos para iterar sobre instrucciones. Finalmente, propone ejercicios para practicar el uso de estas estructuras de control.

Cargado por

Max75
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programación de Base de Datos.

PL/SQL Estructuras Básicas de


Control.
Estructuras de Control.
Como PL/SQL es un lenguaje 3GL, cuenta con las estructuras
básicas de control de flujo:

• Selectivas/Condicionales,

• Bucles.
Estructura Selectiva IF:
Sintaxis:

IF condición THEN
Bloque de instrucciones;
ELSE
Bloque de instrucciones;
END IF;
Ejemplo 1:
Requerimiento:
Determinar si la edad promedio de los
empleados es mayor a los 40 años, si es
asi desplegar un mensaje por consola que
diga GRUPO ADULTO UNO caso contario
GRUPO ADULTO DOS.
set serveroutput on
declare
mEdad int;
begin
Select AVG((extract(year from current_date) - extract(year from fechanacimiento))) INTO mEdad
From Empleados;
if (mEdad > 40) then
dbms_output.put_line('GRUPO ADULTO UNO..'|| to_char(mEdad));
else
dbms_output.put_line('GRUPO ADULTO DOS..'|| to_char(mEdad));
end if;
end;
/
Demostración.
Realizar un reporte que me permita determinar de que cuidad es el cliente que
realizo el pedido mas alto entre los meses de Enero a Mayo del 2017, si la
ciudad es Guayaquil mostrar por consola el mensaje "CLIENTE REGION COSTA",
caso contrario "CLIENTE INDETERMINADO"
set serveroutput on
declare
mciudad [Link]%TYPE;
mmonto int;
begin
Select [Link], [Link] INTO mciudad, mmonto
From Clientes c inner join Pedidos p on [Link] = [Link]
inner join detalle_pedidos d on [Link] = [Link]
Where [Link] = (Select max(cantidad) From detalle_pedidos)
and [Link] between '01/01/2017' and '30/05/2017’;
--dbms_output.put_line('Ciudad y Monto: '||mciudad||mmonto);
if (mciudad ='Guayaquil') then
dbms_output.put_line('CLIENTE DE LA REGION COSTA');
else
dbms_output.put_line('CLIENTE NO INDETERMINADO');
end if;
end;
Laboratorio.
Ejercicios Propuestos:
A. Determinar si la edad promedio de los Empleados de las
ciudades de Guayaquil o Babahoyo es mayor a la edad
promedio de los empleados que habitan en la región Sierra.
Muestre por consola un mensaje que indique el resultado
de dicha comparación.

B. Determinar si la existencia total de todos los productos


pertenecientes a la categoría carnes es mayor a 150
unidades, si fuere así mostrar por consola el mensaje
STOCK VALIDO caso contrario STOCK POR
SUMINISTRAR.
Estructura Selectiva CASE:
CASE [valor_a_comparar]
Sintaxis:
WHEN [valor1 | condición1] THEN
Instrucciones;
WHEN [valor2 | condición2] THEN
Instrucciones;
………….
ELSE
Bloque de instrucciones;
END CASE;
Ejemplo 1:
Requerimiento:
Determinar el descuento en base al
promedio del precio de todos los productos
pertenecientes a la categoría carnes, según
tabla adjunta.

Implementando bajo la 1RA FORMAR de la


instrucción CASE:
set serveroutput on
declare
mPrecio [Link]%TYPE;
mDescuento number(4,2);
begin
Select AVG([Link]) into mPrecio
From Productos p inner join Categorias c on [Link] = [Link]
Where NombreCategoria = 'Carnes';
Case mPrecio
when 100 Then mDescuento:=0.10;
when 200 Then mDescuento:=0.20;
when 300 Then mDescuento:=0.30;
else
mDescuento:=0.05;
End case;
dbms_output.put_line('El descuento es: '||to_char(mDescuento));
end;
/
Ejemplo 2:

Requerimiento:
Veamos ahora el mismo ejemplo
anterior pero aplicando la 2DA FORMA
del CASE, revisemos como se hace:
set serveroutput on
declare
mPrecio [Link]%TYPE;
mDescuento number(4,2);
begin
Select AVG([Link]) into mPrecio
From Productos p inner join Categorias c on [Link] = [Link]
Where NombreCategoria = 'Carnes';
Case
when mPrecio < 100 Then mDescuento:=0.10;
when mPrecio > 100 and mPrecio < 200 Then mDescuento:=0.20;
when mPrecio > 200 and mPrecio < 300 Then mDescuento:=0.30;
else
mDescuento:=0.05;
End case;
dbms_output.put_line('El descuento es: '||to_char(mDescuento));
end;
/
Laboratorio.
Ejercicios Propuestos:
Determinar el status de los clientes de la región costa, en base
al promedio de los montos de compra en el mes de Febrero.
Mostrar un mensaje bajo el siguiente criterio:
MONTO PEDIDO STATUS

< 500 CLIENTE REGULAR

>= 500 Y <=1000 CLIENTE BUENO

>1000 Y <=1500 CLIENTE MUY BUENO

> 1500 Y <=2000 CLIENTE EXCELENTE

Caso contrario CLIENTE TEMPORAL


Estructuras Repetitivas o Bucles.
En PL/SQL tenemos a nuestra disposición los siguientes
iteradores o bucles:

a) LOOP
b) WHILE
c) FOR
El Bucle LOOP.
El bucle LOOP, se repite tantas veces como sea necesario hasta que
se fuerza su salida con la instrucción EXIT.
Su sintaxis es la siguiente:
LOOP
Instrucciones; LOOP
IF (condición) THEN Instrucciones;
Instrucciones; EXIT WHEN (condición);
EXIT; Instrucciones;
END IF; END LOOP;
END LOOP;
SET SERVEROUTPUT ON;
DECLARE
resultado number:=0;
multiplicador number:=1;
BEGIN
LOOP
resultado := 3 * multiplicador;
DBMS_OUTPUT.PUT_LINE('3x'||TO_CHAR(multiplicador)||'='||TO_CHAR(resultado));
multiplicador := multiplicador + 1;
EXIT WHEN multiplicador > 5;
END LOOP;
END;
/
El Bucle WHILE.
El bucle WHILE, se repite mientras que se cumpla una condición
lógica. Su sintaxis es la siguiente:

WHILE (Condición_Lógica) LOOP


Instrucciones;
END LOOP;
El Bucle FOR.
El bucle FOR, se repite tanta veces como le indiquemos en los
identificadores inicio y final. Su sintaxis es la siguiente:

FOR (Condición_Lógica) LOOP


Instrucciones;
END LOOP;
Ejercicio Consolidado.
Desarrolle un bloque anónimo en ORACLE que permita visualizar un reporte con el total de
productos según las categorías existentes, bajo el siguiente formato:

Id Categoría Nombre Categoría Mensaje Total Producto

1 lácteos Tiene un total de Productos 3

También podría gustarte