Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.35 KB | None | 0 0
  1. CREATE OR REPLACE PROCEDURE precio_incremento (nombre_producto VARCHAR2) AS
  2. /*Declaramos variables.*/
  3. v_ventas NUMBER;
  4. v_precio_old NUMBER(5,2);
  5. v_precio_new NUMBER(5,2);
  6.  
  7. BEGIN
  8. /*Calculo del precio inicial.*/
  9. SELECT precio
  10. INTO v_precio_old
  11. FROM productos
  12. WHERE nombre = nombre_producto;
  13. /*Calculamos el numero de ventas del producto.*/
  14. SELECT COUNT(*)
  15. INTO v_ventas
  16. FROM vender
  17. WHERE refproducto IN (SELECT referencia
  18.                       FROM productos
  19.                       WHERE nombre = nombre_producto);
  20. /*En funcion del numero de ventas que realizamos podremos aplicar un 8% o un 4%.*/
  21. IF (v_ventas<=100) THEN
  22. DBMS_OUTPUT.PUT_LINE ('+ Las ventas del producto: '||v_ventas||', no supera más de 100 unidades vendidassu precio se incrementa un 4% +');
  23.  
  24. UPDATE productos
  25. SET precio = precio*1.04
  26. WHERE nombre = nombre_producto;
  27.  
  28. ELSE
  29. DBMS_OUTPUT.PUT_LINE ('+ Las ventas del producto: '||v_ventas||', supera más de 100 unidades vendidas su precio se incrementa un 8% +');
  30.  
  31. UPDATE productos
  32. SET precio=precio*1.08
  33. WHERE nombre = nombre_producto;
  34.  
  35. END IF;
  36. /*Calculamos el precio actualizado.*/
  37. SELECT precio
  38. INTO v_precio_new
  39. FROM productos
  40. WHERE nombre = nombre_producto;
  41.  
  42. DBMS_OUTPUT.PUT_LINE('+ El precio '||v_precio_old||' de '||nombre_producto|| ' se ha actualizado, ahora es '||v_precio_new||' +');
  43.  
  44. END precio_incremento;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement