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
-
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; /
- Usa el procedimiento
-
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; /
- Usa el procedimiento
-
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; /
- Usa la función
-
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; /
- Usa el procedimiento
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.
Curso de PL/SQL
Módulo 1: Introducción a PL/SQL
Módulo 2: Fundamentos de PL/SQL
- Estructura del Bloque PL/SQL
- Variables y Tipos de Datos
- Estructuras de Control
- Cursores
- Manejo de Excepciones