Puedes probar cualquier función en nuestra consola interactiva: Abrir consola SQL →
Funciones almacenadas en SQL: lógica reutilizable y segura
Las funciones almacenadas permiten encapsular cálculos y operaciones que devuelven un valor. Son ideales para validaciones, cálculos financieros, métricas y lógica repetitiva.
Tabla de contenidos
1. ¿Qué es una función almacenada?
Es un bloque de código SQL que devuelve un valor y puede ser llamado desde consultas.
2. Crear una función
CREATE FUNCTION obtener_saldo(id INT)
RETURNS INT
BEGIN
DECLARE resultado INT;
SELECT saldo INTO resultado FROM cuentas WHERE cuenta_id = id;
RETURN resultado;
END;
3. Parámetros
CREATE FUNCTION aplicar_descuento(precio INT, porcentaje INT)
RETURNS INT
BEGIN
RETURN precio - (precio * porcentaje / 100);
END;
4. Valores de retorno
CREATE FUNCTION doble(x INT)
RETURNS INT
BEGIN
RETURN x * 2;
END;
5. Ejemplos prácticos
-- Función para calcular impuestos
CREATE FUNCTION calcular_iva(precio INT)
RETURNS INT
BEGIN
RETURN precio * 0.21;
END;
-- Función para obtener nombre completo
CREATE FUNCTION nombre_completo(id INT)
RETURNS VARCHAR(100)
BEGIN
DECLARE nombre VARCHAR(50);
DECLARE apellido VARCHAR(50);
SELECT n, a INTO nombre, apellido FROM usuarios WHERE usuario_id = id;
RETURN CONCAT(nombre, ' ', apellido);
END;
6. Ejercicios para practicar
- Crea una función que devuelva el doble de un número.
- Crea una función que calcule un descuento.
- Crea una función que devuelva el nombre completo.
- Haz una función que valide un precio.
- Explica cuándo usar funciones.
CREATE FUNCTION f1(x INT) RETURNS INT BEGIN RETURN x*2; END;
CREATE FUNCTION f2(p INT, d INT) RETURNS INT BEGIN RETURN p-(p*d/100); END;
CREATE FUNCTION f3(id INT) RETURNS VARCHAR(100)
BEGIN
DECLARE n VARCHAR(50); DECLARE a VARCHAR(50);
SELECT nombre, apellido INTO n, a FROM usuarios WHERE id=id;
RETURN CONCAT(n,' ',a);
END;
-- Se usan para cálculos y lógica que devuelve un valor.
7. Mini‑proyecto: Biblioteca de funciones internas
CREATE FUNCTION total_con_iva(precio INT)
RETURNS INT
BEGIN
RETURN precio + (precio * 0.21);
END;
8. Errores comunes
- Usar funciones para lógica compleja.
- No validar parámetros.
- Ignorar rendimiento.
- Crear funciones duplicadas.
9. Preguntas frecuentes
¿Las funciones mejoran el rendimiento?
Sí, especialmente en cálculos repetitivos.
¿Puedo llamar funciones desde SELECT?
Sí, es una de sus ventajas.