Portada » Crear función obtenerNombre(pId) en MySQL
Crear función obtenerNombre(pId) en MySQL
En esta ocasión creamos una función en MySQL llamada obtenerNombre(pId), que nos permitirá obtener el nombre de un autor a partir de un parámetro de entrada.
Usaremos un parámetro de tipo entero (pId) en la cláusula WHERE, de manera que podamos buscar un autor por un ID concreto. Esta es una forma muy práctica de encapsular consultas y reutilizarlas dentro de tu base de datos.
Código completo de la función
1. Eliminar la función si ya existe
Es recomendable borrarla antes de crearla para evitar errores:
DROP FUNCTION IF EXISTS obtenerNombre;
2. Cambiar el delimitador
Como trabajamos con bloques de código, debemos modificar el delimitador temporalmente:
DELIMITER //
3. Crear la función
Ahora sí, creamos la función obtenerNombre:
CREATE FUNCTION obtenerNombre (pId INT)
RETURNS VARCHAR(30)
DETERMINISTIC
BEGIN
-- Declaramos la variable para almacenar el resultado
DECLARE vnombre VARCHAR(30);
-- Guardamos el nombre en la variable según el id recibido
SELECT nombre INTO vnombre
FROM autores
WHERE id = pId;
-- Devolvemos el valor
RETURN vnombre;
END //
DELIMITER ;
4. Probar la función
Creamos una variable con el ID y llamamos a la función:
SET @vid = 2;
SELECT IFNULL(obtenerNombre(@vid), 'No hay autores')
AS "El nombre con el Id especificado es";
Resultado de la función
Si el ID existe: mostrará el nombre del autor asociado.
Si el ID no existe: gracias a IFNULL, devolverá el texto "No hay autores".
De esta forma, evitamos errores y mostramos un mensaje más claro al usuario.
Recomendaciones
Añade el modificador DETERMINISTIC siempre que la función devuelva resultados consistentes para un mismo parámetro.
Ajusta el tipo de dato (VARCHAR(30)) a la longitud real de tu campo nombre.
Usa IFNULL() o COALESCE() cuando la función pueda devolver valores nulos.
Preguntas frecuentes sobre la función obtenerNombre(pId) en MySQL
1. ¿Qué diferencia hay entre un procedimiento almacenado y una función en MySQL? Un procedimiento puede ejecutar varias instrucciones y no siempre devuelve un valor, mientras que una función devuelve siempre un resultado que puede usarse en consultas SQL.
2. ¿Por qué usamos DELIMITER // al crear funciones? Se cambia el delimitador para que MySQL no confunda los puntos y comas internos del bloque con el final de la función.
3. ¿Qué hace la cláusula DETERMINISTIC? Indica que la función devuelve siempre el mismo resultado si recibe los mismos parámetros de entrada, lo que ayuda a la optimización de consultas.
4. ¿Cómo manejo los casos cuando el ID no existe en la tabla? Puedes usar IFNULL() o COALESCE() para devolver un mensaje personalizado como “No hay autores”.
5. ¿Puedo usar esta función dentro de otra consulta SQL? Sí, puedes llamarla directamente en SELECT, WHERE o incluso en otras funciones, siempre que no genere ambigüedad en la lógica de la consulta.
PcComponentes estrena esta semana un portátil Lenovo ThinkPad perfecto para la vuelta al cole La vuelta al cole no significa solamente comprar libros, mochilas y material escolar. Para muchos estudiantes, universitarios y profesionales también llega el momento de renovar el ordenador, y aquí es donde aparece una novedad que merece bastante atención. PcComponentes incorpora esta... Leer más: PcComponentes estrena esta semana un portátil Lenovo ThinkPad perfecto para la vuelta al cole
ALDI pone a 4,99 euros unas gafas deportivas fotocromáticas que querrás llevar en todas tus salidas Si eres de los que aprovecha cualquier momento para salir a correr, montar en bicicleta, hacer senderismo o practicar deporte al aire libre, apunta esta oferta porque puede convertirse en uno de esos accesorios que siempre terminan dentro de... Leer más: ALDI pone a 4,99 euros unas gafas deportivas fotocromáticas que querrás llevar en todas tus salidas
PARKSIDE PERFORMANCE tiene la atornilladora que todos los manitas quieren: 20 V por 59,99 euros Si eres de los que disfruta haciendo reparaciones en casa, montando muebles, haciendo pequeños trabajos de bricolaje o simplemente te gusta tener buenas herramientas siempre a mano, esta oferta de Lidl te interesa. La cadena vuelve a poner el foco... Leer más: PARKSIDE PERFORMANCE tiene la atornilladora que todos los manitas quieren: 20 V por 59,99 euros
La freidora de aire doble de ALDI arrasa este sábado: cocina para todos por solo 51,99 euros Si llevas tiempo pensando en comprar una freidora de aire, este sábado puede ser un buen momento para hacerlo. ALDI vuelve a poner el foco en uno de los pequeños electrodomésticos que más han cambiado la forma de... Leer más: La freidora de aire doble de ALDI arrasa este sábado: cocina para todos por solo 51,99 euros