
Procedimientos y funciones almacenados
Además de las consultas normales, SQL ofrece herramientas más potentes: los procedimientos almacenados y las funciones almacenadas. Estos objetos permiten crear bloques de código listos para usar una y otra vez 🔄.
Imagina que tienes una consulta compleja para calcular las estadísticas de ventas y la usas todos los días. En lugar de volver a escribirla cada vez, puedes crear un procedimiento o una función y simplemente llamarlo.
¿Para qué sirven?
Los procedimientos y funciones almacenados resuelven varios problemas importantes:
- 🚀 Reutilización del código: lo escribes una vez y lo usas en todas partes. Sin copias del mismo código repartidas por distintos sitios.
- ⚡ Rendimiento: el código se ejecuta directamente en el servidor de la base de datos, lo que a menudo es más rápido que las consultas normales.
- 🔒 Seguridad: puedes dar acceso a un procedimiento sin dar acceso directo a las tablas.
- 🛡️ Lógica centralizada: toda la lógica de negocio está en un solo lugar, la base de datos.
Diferencias principales
Aunque los procedimientos y las funciones se parecen, hay diferencias importantes entre ellos:
¿Cuándo usar procedimientos?
Los procedimientos almacenados son la mejor opción cuando necesitas:
- Ejecutar una secuencia de operaciones (por ejemplo, crear un pedido, descontar el producto del almacén y enviar una notificación)
- Modificar datos en varias tablas a la vez
- Implementar una lógica de negocio compleja
- Devolver varios conjuntos de resultados
Ejemplo de uso de un procedimiento
Supongamos que necesitamos crear un procedimiento para tramitar un pedido:
MySQL 8.4-- Ejemplo de llamada a un procedimiento (conceptual) CALL create_order(customer_id = 123, product_id = 456, quantity = 2);
Un procedimiento así puede:
- Comprobar si hay existencias del producto en el almacén
- Crear un registro en la tabla de pedidos
- Actualizar las existencias del producto
- Añadir un registro al historial de operaciones
¿Cuándo usar funciones?
Las funciones almacenadas son ideales cuando necesitas:
- Hacer cálculos y devolver un resultado
- Crear una fórmula reutilizable
- Transformar datos de una forma concreta
- Usar el resultado en otras consultas SQL
Ejemplo de uso de una función
Vamos a crear una función para calcular un descuento:
MySQL 8.4-- Ejemplo de uso de una función en una consulta SELECT product_name, price, calculate_discount(price, customer_type) AS discount_amount FROM Products;
Esta función recibe el precio y el tipo de cliente y devuelve el importe del descuento, que puedes usar en cualquier consulta.
Una regla sencilla para elegir
Si no sabes qué elegir, usa esta regla sencilla:
- ¿Necesitas obtener un valor para usarlo en una consulta? → Función
- ¿Necesitas ejecutar un conjunto de acciones o modificar datos? → Procedimiento
Afiancemos lo aprendido
Ahora que conoces las principales diferencias entre procedimientos y funciones, intenta clasificar las tareas en este juego interactivo:
Pantalla demasiado estrecha
El juego necesita una pantalla de al menos 700px de ancho. Amplía la ventana del navegador o gira el dispositivo.
¿Qué viene después?
Este ha sido un artículo introductorio para entender el concepto general. En los siguientes materiales veremos en detalle cómo crear procedimientos y funciones almacenados y cómo trabajar con ellos.