Está en la página 1de 9

SELECCION IF

1. Realizar un bloque anonimo que permita saber si existen mas de 10 unidades


del producto `Coca Cola`

SET SERVEROUTPUT ON

DECLARE

EX PRODUCTOS.UNIDADESEXISTENCIAS%TYPE;

BEGIN

SELECT UNIDADESEXISTENCIAS INTO EX

FROM PRODUCTOS

WHERE NOMBREPRODUCTO='Coca Cola';

IF(EX>10)THEN

DBMS_OUTPUT.PUT_LINE('EXISTEN SUFCIENTES UNIDADES DE COCA


COLA');

ELSE

DBMS_OUTPUT.PUT_LINE('NO EXISTEN SUFCIENTES UNIDADES DE COCA


COLA');

END IF;

END;
2. Determinar si el descuento de los pedidos pertenecientes al id igual a 25 es mayor
a 73 dolares. Si fuera el caso mostrar un mensaje que diga ALTO DESCUENTO
caso contrario mostrar POCO DESCUENTO.

SET SERVEROUTPUT ON

DECLARE

DES DETALLE_PEDIDOS.DESCUENTO%TYPE;

BEGIN

SELECT DESCUENTO INTO DES

FROM DETALLE_PEDIDOS

WHERE IDPEDIDO=25;

IF(DES<73)THEN

DBMS_OUTPUT.PUT_LINE('POCO DESCUENTO');

ELSE

DBMS_OUTPUT.PUT_LINE('ALTO DESCUENTO');

END IF;

END;
SELECCION CASE

1. Evaluar la ciudad de los proveedores pertenecientes a los productos JABON


PERLA, determinar el aumento de cantidades por unidad

SET SERVEROUTPUT ON

DECLARE

nCiudad POVEEDORES.CIUDAD%TYPE;

nAumento VARCHAR2(20);

BEGIN

SELECT CIUDAD Into nCiudad

FROM POVEEDORES PE INNER JOIN PRODUCTOS PD on PE.IDPROVEEDOR=


PD.IDPROVEEDOR

WHERE PD.NOMBREPRODUCTO='Azucar Blanca';

Case nCiudad

when nCiudad='Quito' then nAumento:= '20 Unidades';

when nCiudad='Quevedo' then nAumento:= '30 Unidades';

when nCiudad='Babahoyo' then nAumento:= '15 Unidades';

else

nAumento:= '7Unidades';

end case;

DBMS_OUTPUT.PUT_LINE('El aumento de unidades es: '|| nAumento);

END;

2. Evaluar la cantidad de todos los productos de la categoria dulces, y determinar


su descuento.
SET SERVEROUTPUT ON

DECLARE

nCantidad PRODUCTOS.CANTIDADPORUNIDAD%TYPE;

nDescuento number(4,2);

BEGIN

SELECT CANTIDADPORUNIDAD into nCantidad

FROM PRODUCTOS P INNER JOIN CATEGORIAS C on


P.IDCATEGORIAS=C.IDCATEGORIAS

WHERE NOMBRECATEGORIA ='Dulces';

Case

WHEN nCantidad < 75 THEN nDescuento:=0.12;

WHEN nCantidad> 75 and nCantidad < 125 THEN nDescuento:=0.18;

WHEN nCantidad> 125 and nCantidad < 230 THEN nDescuento:=0.22;

else

nDescuento:=0.07;

end case;

DBMS_OUTPUT.PUT_LINE('El descuento que se aplicara es: '||


TO_CHAR(nDescuento));

END;

ESTRUCTURAS REPETITIVAS

Bucle LOOP

1. Mostrar el total de la cantidad por el precio unidad de todos los productos que
tengan un precio unidad mayor a 10.

SET SERVEROUTPUT ON
DECLARE
nTotal number:=0;
ncantidad PRODUCTOS.CANTIDADPORUNIDAD%TYPE;
nPrecio PRODUCTOS.PRECIOUNIDAD%TYPE;
BEGIN
LOOP
nTotal:= ncantidad * nPrecio;
DBMS_OUTPUT.PUT_LINE('Total'||TO_CHAR(ncantidad)||'*'||TO_CHAR(nPrecio)||'
='||TO_CHAR(nTotal));
nPrecio := nPrecio + 1;
EXIT WHEN nPrecio > 10;
end loop;
END;

2. Aumentar 10 unidades a todos los productos que tengan menos de 5 productos


SET SERVEROUTPUT ON;

DECLARE

resultado number:=0;

BEGIN

LOOP

nCantidad PRODUCTOS.CANTIDADUNIDAD%TYPE

IF (nCantidad < 5) THEN

resultado := 10 + nCantidad;

DBMS_OUTPUT.PUT_LINE('10 + '||TO_CHAR(nCantidad)||'='||TO_CHAR(resultado));

nCantidad := nCantidad + 1;

EXIT;

END IF;

END LOOP;
END;

BUCLE FOR

1. Realizar un descuento del 5% a todos los productos cuyp precio unidad sea mayor
a 10

Set SERVEROUTPUT ON

DECLARE

nDescuento number(4,2)

nPrecio PRODUCTOS.PRECIOUNIDAD%TYPE

BEGIN

FOR (nPrecio> 10) LOOP

nDescuento= nPrecio*0.05;

DBMS_OUTPUT.PUT_LINE(`Tiene un descuento del 5% que es: `||


TO_CHAR(nDescuento));

END LOOP;

END;

2. Realizar un aumento de 15 unidades a todos los productos que trngan menos de


5 productos.

Set SERVEROUTPUT ON

DECLARE

nAumento

nCantidad PRODUCTOS.CANTIDADPORUNIDAD%TYPE

BEGIN
FOR (nCantidad<5) LOOP

nAumento= nCantidad + 15;

DBMS_OUTPUT.PUT_LINE(`Tiene un aumento de 15 unidades: `||


TO_CHAR(nAumento));

END LOOP;

END;

BUCLE WHILE

1. Determinar si existen suficiente unidades en existencias del producto LECHE.

SET SERVEROUTPUT ON

DECLARE

EX PRODUCTOS.UNIDADESEXISTENCIAS%TYPE;

BEGIN

SELECT UNIDADESEXISTENCIAS INTO EX

FROM PRODUCTOS

WHERE NOMBREPRODUCTO='Leche';

WHILE (EX>100) LOOP

DBMS_OUTPUT.PUT_LINE(`Tiene suficiente unidades en exixtencia`);

END LOOP;

END;

CURSORES

1. Mostrar la ciudad, la region y el pais de todos clientes

Set SERVEROUTPUT ON
DECLARE

CURSOR nCiudad

IS

SELECT CIUDAD, REGION, PAIS

FROM CLIENTES;

registro nCiudad%ROWTYPE;

BEGIN

OPEN nCiudad;

FETCH nCiudad INTO registro;

CLOSE nCiudad;

END;

2. Mostrar el nombre de la compañia de todos los proveedores.

Set SERVEROUTPUT ON

BEGIN

FOR nRegistro IN (SELECT * FROM PROVEEDORES)

LOOP

dbms_output.put_line(nRegistro.NOMBRECOMPAÑIA);

END LOOP;

END;

3. Mostra los pedidos, fecha de entrega y pedido de todos los pedidos cuya cantidad
sea mayor a 15.

Set serveroutput On

DECLARE
CURSOR nPedidos

IS

Select IDPEDIDO,FECHAPEDIDO, FECHAENTREGA

From PEDIDOS P INNER JOIN DETALLE_PEDIDOS DP On P.IDPEDIDO =


DP.IDPEDIDO

Where DP.CANTIDAD > 15;

nRegistro nPedidos%RowType;

BEGIN

OPEN nPedidos;

LOOP

FETCH nPedidos INTO nRegistro;

EXIT WHEN nPedidos%NOTFOUND;

dbms_output.put_line(nRegistro.DESTINATARIO);

END LOOP;

CLOSE nPedidos;

END;

También podría gustarte