karlangadas

pregunta 7 lab4 bd

Oct 27th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.40 KB | None | 0 0
  1. --PREGUNTA 7
  2. CREATE OR REPLACE FUNCTION f_MotivoVariacionPedidos(p_valor NUMBER ) RETURN NUMBER IS
  3. pMonto NUMBER;
  4. pMontoaux NUMBER;
  5. fecha DATE;
  6. productaux L4_PRODUCTO.IDPRODUCTO%TYPE;
  7. product L4_PRODUCTO.IDPRODUCTO%TYPE;
  8.  
  9. BEGIN
  10. IF p_valor >0 THEN
  11.   SELECT TABLA.IDPRODUCTO INTO product
  12.   FROM
  13.     (SELECT  TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY'), PROD.IDPRODUCTO,  SUM(ped.montototal)
  14.     FROM  L4_PEDIDO PED, L4_PRODUCTO PROD, L4_DETALLEPEDIDO DET
  15.     WHERE  
  16.     PED.IDPEDIDO=DET.IDPEDIDO
  17.     AND DET.IDPRODUCTO=PROD.IDPRODUCTO
  18.     AND   TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM-YYYY')
  19.     GROUP BY TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY'), PROD.IDPRODUCTO
  20.     ORDER BY SUM(ped.montototal) DESC) TABLA
  21.   WHERE ROWNUM=1;
  22.  
  23.   SELECT  PROD.IDPRODUCTO, SUM( ped.montototal)
  24.   INTO productaux, pMonto
  25.   FROM  L4_PEDIDO PED, L4_PRODUCTO PROD, L4_DETALLEPEDIDO DET
  26.   WHERE  
  27.   PED.IDPEDIDO=DET.IDPEDIDO
  28.   AND DET.IDPRODUCTO=PROD.IDPRODUCTO
  29.   AND PROD.IDPRODUCTO=product
  30.   GROUP BY PROD.IDPRODUCTO;
  31.    
  32. ELSE  
  33.     SELECT  SUM( ped.montototal )  INTO pMonto
  34.     FROM  L4_PEDIDO PED
  35.     WHERE  
  36.      TO_CHAR(PED.FECHAPEDIDO, 'MM-YYYY') = TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM-YYYY')
  37.      AND PED.IDESTADOPEDIDO = 4;
  38. END IF;        
  39. RETURN pMonto;
  40. END;
  41.  
  42. SET SERVEROUTPUT ON
  43. DECLARE
  44. resp NUMBER;
  45. BEGIN
  46.    resp:=f_MotivoVariacionPedidos(1);
  47.    DBMS_OUTPUT.put_line(resp);
  48. END;
Advertisement
Add Comment
Please, Sign In to add comment