Cómo crear un USB booteable de Linux Mint 20.1 paso a paso

En esta guía aprenderás paso a paso a crear una función en MySQL que te permitirá obtener la ciudad de un cliente usando su id_cliente
.
Este tipo de funciones resultan muy útiles cuando quieres reutilizar consultas o encapsular lógica directamente dentro de la base de datos, algo frecuente en proyectos de tiendas online, sistemas CRM o aplicaciones de gestión de usuarios.
El propósito es crear una función llamada obtenerCiudad
que:
Reciba como parámetro el ID de un cliente.
Devuelva el nombre de la ciudad asociada a ese cliente.
En caso de no encontrar el ID, retorne NULL
.
De esta forma podrás consultar información de forma rápida y ordenada, sin tener que repetir la misma consulta SQL cada vez.
Antes de crear la función, asegúrate de estar trabajando sobre la base de datos correcta y de conocer la estructura de la tabla clientes
.
-- Usamos la base de datos tiendaonline
USE tiendaonline;
-- Mostramos la tabla clientes
SELECT * FROM clientes;
Esto te permitirá verificar qué columnas existen y cómo están organizados los datos.
Antes de convertir la consulta en función, comprobamos que devuelve correctamente la ciudad del cliente con un id_cliente
concreto:
-- Consulta básica que usará la función
SELECT c.ciudad
FROM clientes AS c
WHERE id_cliente = 2;
Si el resultado es correcto, puedes pasar al siguiente paso.
Esto evita errores en caso de que la función obtenerCiudad
ya haya sido creada previamente:
-- Eliminamos la función si existe
DROP FUNCTION IF EXISTS obtenerCiudad;
obtenerCiudad
La siguiente función recibirá un parámetro (pid_cliente
) y devolverá una cadena (VARCHAR(50)
) con el nombre de la ciudad.
También aplicamos la cláusula READS SQL DATA
para indicar que solo lee datos, sin realizar modificaciones.
-- Cambiamos el delimitador para definir la función
DELIMITER //
CREATE FUNCTION obtenerCiudad(pid_cliente INT)
RETURNS VARCHAR(50)
DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE v_ciudad VARCHAR(50);
SELECT c.ciudad
INTO v_ciudad
FROM clientes AS c
WHERE c.id_cliente = pid_cliente
AND c.id_cliente IS NOT NULL;
RETURN v_ciudad;
END //
DELIMITER ;
Finalmente, ejecutamos una llamada de prueba para confirmar que funciona correctamente:
-- Prueba de la función
SELECT obtenerCiudad(2) AS Ciudad;
El resultado mostrará el nombre de la ciudad asociada al cliente con ID 2.
Si el ID no existe, la función devolverá NULL
.
Reutilización del código: puedes llamar a la función en cualquier consulta.
Mantenimiento más sencillo: si cambia la estructura, solo modificas la función.
Mayor claridad en las consultas: tu SQL será más limpio y legible.
Seguridad y control: las funciones pueden encapsular reglas de negocio sin exponer la lógica completa.
Supongamos que quieres mostrar el nombre del cliente y su ciudad directamente desde una consulta:
SELECT
c.nombre,
obtenerCiudad(c.id_cliente) AS Ciudad
FROM clientes AS c;
Así obtendrás una lista completa de clientes junto con su ciudad, utilizando tu nueva función.
Crear funciones en MySQL, como obtenerCiudad
, te permite automatizar consultas repetitivas y mantener tu código más ordenado.
Esta práctica es ideal para aplicaciones que requieren acceso frecuente a datos específicos, como nombres de ciudad, direcciones o estados de pedidos.
Con esta base, puedes seguir aprendiendo a crear funciones más complejas que incluyan cálculos, validaciones o integración con otras tablas dentro de la misma base de datos.
FAQ — Preguntas frecuentes
¿Qué diferencia hay entre una función y un procedimiento almacenado?
Las funciones devuelven siempre un valor y pueden usarse dentro de consultas.
Los procedimientos almacenados pueden ejecutar múltiples acciones, pero no se utilizandentro de un
SELECT
.¿Puedo devolver más de un valor desde una función?
No directamente. Las funciones solo devuelven un único valor, aunque puedes devolver tiposcompuestos o crear varias funciones específicas.
¿Qué significa la cláusula
DETERMINISTIC
?
Indica que la función devuelve siempre el mismo resultado paralos mismos valores de entrada, lo que mejora el rendimiento en caché y optimización.
¿Puedo usar esta función en una vista?
Sí, puedes utilizar funciones personalizadas dentro de vistas,consultas y subconsultas, siempre que no modifiquen datos.
¿Por qué se usa
READS SQL DATA
?
Porque esta función solo lee datos sin modificar tablas.
Es una buena práctica que ayuda a MySQL a optimizar su ejecución y controlar permisos.
Comentarios
Publicar un comentario