¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)
Crear función obtenerNombre(pId) en MySQL
Portada » Crear función obtenerNombre(pId) en MySQL

Crear función obtenerNombre(pId) en MySQL

Anuncios
Publicidad

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

CREATE FUNCTION obtenerNombre (pId int)

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.

Te puede interesar:

Funciones en MySQL: Ejemplos, Sintaxis y Casos Prácticos

Seguir leyendo:

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)

Deja un comentario

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)
error: Content is protected !!
Scroll al inicio
Hablemos de informática
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.