Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PROCEDURE P_MasVendidos( pMonto IN NUMBER, pCantidadProductos OUT NUMBER) IS
- iPromocion NUMBER;
- idNuevaPromocion NUMBER;
- pIdPromProducto NUMBER;
- BEGIN
- --CantidadProductos sobre monto pasado en el parámetro pMonto
- SELECT COUNT(*) INTO pCantidadProductos
- FROM
- (SELECT PROD.IDPRODUCTO, SUM(DET.MONTODETALLE)
- FROM L4_PRODUCTO PROD, L4_PEDIDO PED, L4_DETALLEPEDIDO DET
- WHERE PED.IDPEDIDO=DET.IDPEDIDO
- AND DET.IDPRODUCTO=PROD.IDPRODUCTO
- AND TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM-YYYY')
- GROUP BY PROD.IDPRODUCTO
- HAVING SUM(DET.MONTODETALLE)>pMonto);
- IF pCantidadProductos =1 THEN
- --Obtengo el IDPRODUCTO a promocionar
- SELECT PRODUCTOS.IDPRODUCTO INTO pIdPromProducto
- FROM
- (
- SELECT PRO.IDPRODUCTO, SUM(pRO.PRECIO*DET.CANTIDAD) montoVendido
- FROM L4_DETALLEPEDIDO DET , L4_PRODUCTO PRO, L4_PEDIDO PED
- WHERE DET.IDPEDIDO = PED.IDPEDIDO AND DET.IDPRODUCTO= PRO.IDPRODUCTO
- AND TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM-YYYY')
- GROUP BY PRO.IDPRODUCTO
- ORDER BY montoVendido DESC )PRODUCTOS
- WHERE ROWNUM=1;
- --Revisar que el producto no tenga una promoción vigente
- SELECT COUNT(*) INTO iPromocion
- FROM L4_PROMOCION PRO
- WHERE FECHAINICIO<SYSDATE AND FECHARETIRO>SYSDATE
- AND PRO.IDPRODUCTO = pIdPromProducto;
- IF iPromocion =0 THEN
- --calculo id para nueva promocion
- SELECT MAX(IDPROMOCION) + 1 INTO idNuevaPromocion FROM l4_PROMOCION ;
- INSERT INTO L4_PROMOCION VALUES ( idNuevaPromocion, pIdPromProducto, 'Regalo de Sofa Cama', SYSDATE, ADD_MONTHS(SYSDATE,2));
- INSERT INTO L4_PROMOCIONREBAJA VALUES (idNuevaPromocion, 'Sofa Cama' );
- COMMIT;
- END IF;
- END IF;
- END P_MasVendidos;
- SET SERVEROUTPUT ON
- DECLARE
- pCantidadProductos NUMBER;
- BEGIN
- P_MasVendidos(20, pCantidadProductos);
- DBMS_OUTPUT.PUT_LINE(pCantidadProductos);
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement