Advertisement
karlangadas

pregunta 4 lab 4 bd

Oct 28th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.92 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE P_MasVendidos(  pMonto IN NUMBER, pCantidadProductos OUT NUMBER) IS
  2. iPromocion NUMBER;
  3. idNuevaPromocion NUMBER;
  4. pIdPromProducto NUMBER;
  5. BEGIN
  6.  
  7. --CantidadProductos sobre monto pasado en el parámetro pMonto
  8. SELECT COUNT(*) INTO pCantidadProductos
  9. FROM
  10. (SELECT PROD.IDPRODUCTO, SUM(DET.MONTODETALLE)
  11. FROM L4_PRODUCTO PROD, L4_PEDIDO PED, L4_DETALLEPEDIDO DET
  12. WHERE PED.IDPEDIDO=DET.IDPEDIDO
  13. AND DET.IDPRODUCTO=PROD.IDPRODUCTO
  14. AND TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM-YYYY')
  15. GROUP BY PROD.IDPRODUCTO
  16. HAVING SUM(DET.MONTODETALLE)>pMonto);
  17.  
  18. IF pCantidadProductos =1  THEN
  19.     --Obtengo el IDPRODUCTO a promocionar
  20.     SELECT  PRODUCTOS.IDPRODUCTO INTO pIdPromProducto
  21.     FROM
  22.     (
  23.     SELECT  PRO.IDPRODUCTO, SUM(pRO.PRECIO*DET.CANTIDAD) montoVendido
  24.     FROM L4_DETALLEPEDIDO DET , L4_PRODUCTO PRO, L4_PEDIDO PED
  25.     WHERE  DET.IDPEDIDO = PED.IDPEDIDO AND DET.IDPRODUCTO= PRO.IDPRODUCTO
  26.     AND TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM-YYYY')
  27.     GROUP BY PRO.IDPRODUCTO
  28.     ORDER BY montoVendido DESC )PRODUCTOS
  29.     WHERE ROWNUM=1;
  30.    
  31.     --Revisar que el producto no tenga una promoción vigente
  32.     SELECT COUNT(*) INTO iPromocion
  33.     FROM L4_PROMOCION PRO
  34.     WHERE  FECHAINICIO<SYSDATE AND FECHARETIRO>SYSDATE
  35.     AND PRO.IDPRODUCTO = pIdPromProducto;
  36.  
  37.     IF iPromocion =0 THEN
  38.     --calculo id para nueva promocion
  39.     SELECT MAX(IDPROMOCION) + 1 INTO idNuevaPromocion FROM l4_PROMOCION ;  
  40.    
  41.     INSERT INTO L4_PROMOCION VALUES (  idNuevaPromocion,  pIdPromProducto, 'Regalo de Sofa Cama', SYSDATE, ADD_MONTHS(SYSDATE,2));
  42.     INSERT INTO L4_PROMOCIONREBAJA VALUES (idNuevaPromocion, 'Sofa Cama' );
  43.     COMMIT;
  44.    
  45.     END IF;
  46. END IF;
  47. END P_MasVendidos;
  48.  
  49. SET SERVEROUTPUT ON
  50. DECLARE
  51. pCantidadProductos NUMBER;
  52. BEGIN
  53. P_MasVendidos(20, pCantidadProductos);
  54. DBMS_OUTPUT.PUT_LINE(pCantidadProductos);
  55. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement