En este módulo, aplicaremos todo lo aprendido en los módulos anteriores a través de estudios de caso del mundo real. Estos estudios de caso están diseñados para consolidar tus conocimientos y mostrar cómo PL/SQL puede ser utilizado para resolver problemas complejos en entornos empresariales.

Estudio de Caso 1: Sistema de Gestión de Inventarios

Descripción del Problema

Una empresa necesita un sistema para gestionar su inventario de productos. El sistema debe permitir:

  • Registrar nuevos productos.
  • Actualizar la cantidad de productos en el inventario.
  • Consultar el inventario para verificar la disponibilidad de productos.
  • Generar reportes de productos con bajo stock.

Solución Propuesta

Utilizaremos PL/SQL para crear procedimientos almacenados, funciones y disparadores que manejen estas operaciones.

Implementación

1. Crear la Tabla de Productos

CREATE TABLE productos (
    id_producto NUMBER PRIMARY KEY,
    nombre VARCHAR2(50),
    cantidad NUMBER,
    precio NUMBER
);

2. Procedimiento para Registrar Nuevos Productos

CREATE OR REPLACE PROCEDURE registrar_producto (
    p_id_producto IN NUMBER,
    p_nombre IN VARCHAR2,
    p_cantidad IN NUMBER,
    p_precio IN NUMBER
) IS
BEGIN
    INSERT INTO productos (id_producto, nombre, cantidad, precio)
    VALUES (p_id_producto, p_nombre, p_cantidad, p_precio);
END;
/

3. Procedimiento para Actualizar la Cantidad de Productos

CREATE OR REPLACE PROCEDURE actualizar_cantidad (
    p_id_producto IN NUMBER,
    p_cantidad IN NUMBER
) IS
BEGIN
    UPDATE productos
    SET cantidad = p_cantidad
    WHERE id_producto = p_id_producto;
END;
/

4. Función para Consultar la Disponibilidad de un Producto

CREATE OR REPLACE FUNCTION consultar_disponibilidad (
    p_id_producto IN NUMBER
) RETURN NUMBER IS
    v_cantidad NUMBER;
BEGIN
    SELECT cantidad INTO v_cantidad
    FROM productos
    WHERE id_producto = p_id_producto;
    
    RETURN v_cantidad;
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        RETURN -1; -- Indica que el producto no existe
END;
/

5. Disparador para Notificar Productos con Bajo Stock

CREATE OR REPLACE TRIGGER notificar_bajo_stock
AFTER UPDATE OF cantidad ON productos
FOR EACH ROW
WHEN (NEW.cantidad < 10)
BEGIN
    DBMS_OUTPUT.PUT_LINE('Advertencia: El producto ' || :NEW.nombre || ' tiene bajo stock.');
END;
/

6. Generar Reporte de Productos con Bajo Stock

CREATE OR REPLACE PROCEDURE reporte_bajo_stock IS
BEGIN
    FOR r IN (SELECT nombre, cantidad FROM productos WHERE cantidad < 10) LOOP
        DBMS_OUTPUT.PUT_LINE('Producto: ' || r.nombre || ', Cantidad: ' || r.cantidad);
    END LOOP;
END;
/

Ejercicio Práctico

  1. Registrar un Nuevo Producto:

    • Usa el procedimiento registrar_producto para añadir un nuevo producto al inventario.
    • Ejemplo:
      BEGIN
          registrar_producto(1, 'Laptop', 50, 1000);
      END;
      /
      
  2. Actualizar la Cantidad de un Producto:

    • Usa el procedimiento actualizar_cantidad para cambiar la cantidad de un producto existente.
    • Ejemplo:
      BEGIN
          actualizar_cantidad(1, 5);
      END;
      /
      
  3. Consultar la Disponibilidad de un Producto:

    • Usa la función consultar_disponibilidad para verificar la cantidad disponible de un producto.
    • Ejemplo:
      DECLARE
          v_cantidad NUMBER;
      BEGIN
          v_cantidad := consultar_disponibilidad(1);
          DBMS_OUTPUT.PUT_LINE('Cantidad disponible: ' || v_cantidad);
      END;
      /
      
  4. Generar Reporte de Productos con Bajo Stock:

    • Usa el procedimiento reporte_bajo_stock para listar los productos con bajo stock.
    • Ejemplo:
      BEGIN
          reporte_bajo_stock;
      END;
      /
      

Retroalimentación y Consejos

  • Errores Comunes:

    • No manejar adecuadamente las excepciones, lo que puede llevar a que el sistema falle sin proporcionar información útil.
    • No validar los datos de entrada, lo que puede causar inconsistencias en la base de datos.
  • Consejos Adicionales:

    • Siempre valida los datos de entrada en tus procedimientos y funciones.
    • Utiliza transacciones para asegurar que las operaciones críticas se completen correctamente.
    • Implementa un sistema de logs para rastrear las operaciones y facilitar la depuración.

Conclusión

En este estudio de caso, hemos creado un sistema básico de gestión de inventarios utilizando PL/SQL. Hemos cubierto la creación de tablas, procedimientos almacenados, funciones y disparadores. Este ejemplo práctico te proporciona una base sólida para desarrollar sistemas más complejos y robustos en el futuro.

© Copyright 2024. Todos los derechos reservados