Está en la página 1de 6

Funciones

Funciones creadas en la clase anterior


nroPedidos(xnitcliente IN number)
nroGenero(Maculino o Femenino, idsucursal)

Crear las siguientes funciones:


obt_precio_producto(xidprod): Devuelve el precio del producto xidprod
calcula_monto_x_pedido(xnropedido): Devuelve el monto a cancelar del

pedido xnropedido
obt_nro_productos_x_pedido(xnropedido): Devuelve la cantidad de

productos solicitados en el pedidod xnropedido

1. Utilizando la funciones creadas anteriormente. Desplegar la siguiente


informacin:
Nitcliente: Nit de cliente
Nombre: Nombre del cliente
Nropedido: Nmero de pedido
Nroproductos: Cantidad de productos solicitados dentro el pedido
Monto_cancelar: Monto total a cancelar por pedido

select c.nitcliente, c.nombre,p.nropedido,


nvl(obt_nro_productos_x_pedido(nropedido),'0') as
nroproducto,nvl(calcula_monto_x_pedido(nropedido),'0')as costo
from cliente c left join pedido p
on c.nitcliente=p.nitcliente
order by nitcliente

2. Sin utilizar las funciones. Crear la sentencia SQL para desplegar la


misma informacin

Proyecto de Curso
Movimientos Sociales
o
o
o
o
o
o
o
o
o
o
o
o
o
o

Sindicatos, agrupaciones, sectores, etc.


Marchas, huelgas, bloqueos, etc.
Objetivos y/o propsitos del movimiento social
Dirigentes
Cabecillas
Pliegos petitorios
Cronograma de movilizaciones
Instituciones involucradas en los movimientos
mbito del movimiento social
Consecuencias del movimiento social
Aprendidos y/o arrestados
Medios de comunicacin en los cuales se inform del movimiento
social
Redes sociales en la cuales se difundi este movimiento
Y otros

obt_precio_producto(xidprod): Devuelve el

precio del producto xidprod


Create or replace function obt_precio_producto(xidprod IN number)
return number
IS precio number;
BEGIN
select costo INTO precio
from producto
where idprod=xidprod;
return precio;
END obt_precio_producto;
select idprod, obt_precio_producto(idprod)as precio
from producto

calcula_monto_x_pedido(xnropedido):

Devuelve el monto a cancelar del pedido


xnropedido
Create or replace function calcula_monto_x_pedido(xnropedido IN
number)
return number
IS Monto_a_Cancelar number;
BEGIN
select sum(p.costo*dp.cantidad)INTO Monto_a_Cancelar
from producto p, detalle_pedido dp
where dp.nropedido=xnropedido AND p.idprod=dp.idprod
group by dp.nropedido;
return Monto_a_Cancelar;
END ;
select nropedido,calcula_monto_x_pedido(nropedido)as costo
from pedido

obt_nro_productos_x_pedido(xnropedido):

Devuelve la cantidad de productos solicitados


en el pedidod xnropedido
Create or replace function obt_nro_productos_x_pedido(xnropedido
IN number)
return number
IS nro_producto number;
BEGIN
select A.cantidad INTO nro_producto
from pedido p,(select nropedido,sum(cantidad)cantidad
from detalle_pedido
group by nropedido )A
where p.nropedido=xnropedido AND p.nropedido=A.nropedido;
return nro_producto;
END ;

select nitcliente, obt_nro_productos_x_pedido(nropedido) as


nroproducto
from pedido
order by nitcliente

SELECT AA.nitcliente,
AA.nombre,AA.nropedido,nvl(AA.nroproductos,'0'),nvl(BB.monto_cance
lar,'0')as monto_cancelar
FROM (select A.nitcliente, A.nombre,A.nropedido,B.nroproductos
from (select c.nitcliente, c.nombre, p.nropedido
from cliente c left join pedido p
on c.nitcliente=p.nitcliente)A left join (select nropedido,
sum(cantidad)as nroproductos
from detalle_pedido
group by nropedido)B
on A.nropedido=B.nropedido
order by A.nitcliente)AA left join (select dp.nropedido,
sum(dp.cantidad*p.costo)as monto_cancelar
from detalle_pedido dp,producto p
where dp.idprod=p.idprod
group by dp.nropedido)BB
ON AA.nropedido=BB.nropedido
order by AA.nitcliente

Select ll.nitcliente,ll.nombre,ll.nropedido,nvl(ll.total,'0')
nroproductos,nvl(t.total,'0') monto_cancelar
from (Select l.nitcliente,l.nombre,l.nropedido,n.total
From (Select c.nitcliente,c.nombre,p.nropedido
From cliente c left join pedido p
on c.nitcliente = p.nitcliente) l left join (Select
nropedido,count(*) total
from
detalle_pedido
group by
nropedido) n
on l.nropedido =
n.nropedido) ll left join (select d.nropedido,sum(p.costo*d.cantidad)
total
from producto p, detalle_pedido d

where p.idprod = d.idprod


group by d.nropedido) t
on ll.nropedido = t.nropedido
order by ll.nitcliente

También podría gustarte