Table of Contents
Cómo crear una función en MySQL para obtener el nombre y correo de un cliente por su ID
En este ejemplo aprenderás a crear una función en MySQL llamada consultarNombreYEmail, que devuelve el nombre y correo de un cliente según su ID.
La función recibe como parámetro el id_cliente, busca en la tabla clientes y devuelve ambos datos concatenados en una sola cadena.
De esta forma, podrás reutilizar esta función sin necesidad de escribir siempre la misma consulta.
1. Seleccionar la base de datos
USE tiendaonline;
2. Verificar la tabla sobre la que vamos a trabajar
SELECT * FROM clientes AS c;
3. Eliminar la función si ya existe
DROP FUNCTION IF EXISTS consultarNombreYEmail;
4. Crear la función en MySQL
DELIMITER //
CREATE FUNCTION consultarNombreYEmail(f_id INT)
RETURNS VARCHAR(100)
DETERMINISTIC
BEGIN
-- Variable que almacenará el resultado
DECLARE v_resultado VARCHAR(100);
-- Consulta que concatena nombre y correo
SELECT CONCAT(c.nombre, ' - ', c.email)
INTO v_resultado
FROM clientes AS c
WHERE id_cliente = f_id;
-- Devolvemos el resultado
RETURN v_resultado;
END //
DELIMITER ;
Notas:
- Usamos
VARCHAR(100)porque suele ser suficiente para concatenar nombre y correo. DETERMINISTICindica que la función devuelve siempre el mismo resultado si recibe el mismo parámetro.CONCATpermite unir el nombre y correo en un solo valor, separados por un guion o espacio (según prefieras).
5. Llamar a la función
Ejecutamos la función pasando un ID de cliente, por ejemplo el 2:
SELECT consultarNombreYEmail(2) AS "Nombre y correo del cliente";
Resultado esperado:
+------------------------------+
| Nombre y correo del cliente |
+------------------------------+
| Juan Pérez - juan@mail.com |
+------------------------------+
Hemos creado una función en MySQL que:
- Recibe un parámetro de entrada (
id_cliente). - Recupera de la tabla el
nombreyemail. - Devuelve ambos concatenados en una sola cadena.
Esto hace que las consultas sean más limpias y reutilizables.
Preguntas frecuentes (FAQ)
1. ¿Qué pasa si el cliente no existe?
La función devolverá NULL. Puedes usar IFNULL al llamarla para mostrar un mensaje alternativo:
SELECT IFNULL(consultarNombreYEmail(99), 'Cliente no encontrado') AS resultado;
2. ¿Puedo devolver nombre y correo en columnas separadas?
Sí, pero en ese caso deberías usar un procedimiento almacenado con parámetros OUT, ya que una función en MySQL solo devuelve un valor.
3. ¿Qué ocurre si el email es muy largo?
Si el campo email de tu tabla supera la longitud definida (ej. VARCHAR(100)), deberías aumentar el tamaño en la definición de la función, por ejemplo VARCHAR(200).

Te puede interesar:
Funciones en MySQL: Ejemplos, Sintaxis y Casos Prácticos
Seguir leyendo:




