¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)
Procedimiento pobtenernombreYproducto() en MySQL
Portada » Procedimiento pobtenernombreYproducto() en MySQL
Anuncios
Publicidad

Procedimiento pobtenernombreYproducto() en MySQL

En este tutorial vamos a crear un procedimiento almacenado llamado pobtenernombreYproducto(). Su función es recuperar, a partir de un ID de cliente, el nombre del cliente y el nombre del producto que ha pedido.


Base de datos y tablas utilizadas

Trabajaremos sobre la base de datos tienda_ropa, que tiene las siguientes tablas:

USE tienda_ropa;

SELECT * FROM clientes;
SELECT * FROM pedidos;

La tabla clientes guarda la información de los clientes, y la tabla pedidos almacena los productos comprados, con una clave ajena id_cliente que conecta ambas tablas.


Consulta previa

Antes de crear el procedimiento, probamos la consulta directamente:

SELECT c.nombre, p.producto 
FROM pedidos AS p 
INNER JOIN clientes AS c 
    ON p.id_cliente = c.id 
WHERE c.id = 1;

👉 Esto devuelve el nombre del cliente y el producto asociado al pedido.


Creación del procedimiento

Primero borramos el procedimiento si ya existe, y luego lo creamos:

DROP PROCEDURE IF EXISTS pobtenernombreYproducto;

DELIMITER //

CREATE PROCEDURE pobtenernombreYproducto(
    IN pId INT, 
    OUT pnombre_cliente VARCHAR(30), 
    OUT pnombre_producto VARCHAR(30)
)
BEGIN
    -- Manejo de errores
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        SELECT 'error';
        ROLLBACK;
    END;

    -- Consulta para unir clientes y pedidos con INNER JOIN
    SELECT c.nombre, p.producto 
    INTO pnombre_cliente, pnombre_producto
    FROM pedidos AS p 
    INNER JOIN clientes AS c ON p.id_cliente = c.id 
    WHERE c.id = pId;
END //

DELIMITER ;

Uso del procedimiento

  1. Declaramos las variables:
SET @vpId = 1;
SET @vpnombre_cliente = '';
SET @vpnombre_producto = '';
  1. Llamamos al procedimiento:
CALL pobtenernombreYproducto(@vpId, @vpnombre_cliente, @vpnombre_producto);
  1. Mostramos los resultados:
SELECT @vpnombre_cliente AS 'Nombre del cliente', 
       @vpnombre_producto AS 'Nombre del producto';

Crear procedimiento pobtenernombreYproducto()

Resultado esperado

Si el cliente con ID = 1 es Carlos y su producto es "Zapatos", el resultado será:

Nombre del clienteNombre del producto
CarlosZapatos

Consideraciones finales

El procedimiento devuelve el nombre del cliente y el producto asociado a un pedido.
Si un cliente tiene varios pedidos, se producirá un error porque la consulta devuelve más de una fila.

Para solucionarlo, puedes:

  • Usar LIMIT 1 para devolver un único producto.
  • O bien devolver todos los productos en un SELECT en lugar de usar parámetros OUT.

Con este procedimiento, aprendiste cómo usar parámetros IN y OUT, manejar errores con HANDLER y unir tablas mediante INNER JOIN.

Crear procedimiento pobtenernombreYproducto()

FAQ sobre el procedimiento pobtenernombreYproducto() en MySQL

1. ¿Qué hace el procedimiento pobtenernombreYproducto()?

Este procedimiento devuelve, a partir de un ID de cliente, el nombre del cliente y el nombre del producto que ha pedido.


2. ¿Qué parámetros utiliza el procedimiento?

  • IN pId → es el parámetro de entrada, que representa el ID del cliente.
  • OUT pnombre_cliente → devuelve el nombre del cliente.
  • OUT pnombre_producto → devuelve el nombre del producto.

3. ¿Qué ocurre si un cliente tiene varios pedidos?

El procedimiento puede dar error porque la consulta devolvería más de una fila.
👉 Para evitarlo, se puede:

  • Usar LIMIT 1 para obtener solo el primer producto.
  • O crear una versión alternativa que devuelva todos los productos en un SELECT.

4. ¿Qué pasa si el cliente no tiene pedidos?

En ese caso, los parámetros de salida quedarán como NULL, ya que no se encontrarán coincidencias en la consulta.


5. ¿Por qué se usa INNER JOIN en el procedimiento?

Porque necesitamos unir dos tablas (clientes y pedidos) y relacionarlas a través de la clave foránea id_cliente. El INNER JOIN nos asegura que solo aparecerán registros donde exista relación entre ambas tablas.


6. ¿Qué papel cumple el HANDLER dentro del procedimiento?

El DECLARE EXIT HANDLER FOR SQLEXCEPTION se encarga de capturar errores de SQL.
En caso de error, muestra el mensaje 'error' y ejecuta un ROLLBACK.


7. ¿Cómo se ejecuta el procedimiento?

Primero declaramos las variables:

SET @vpId = 1;
SET @vpnombre_cliente = '';
SET @vpnombre_producto = '';

Luego lo llamamos:

CALL pobtenernombreYproducto(@vpId, @vpnombre_cliente, @vpnombre_producto);

Finalmente mostramos el resultado:

SELECT @vpnombre_cliente AS 'Nombre del cliente', 
       @vpnombre_producto AS 'Nombre del producto';

8. ¿En qué casos conviene usar procedimientos como este?

Son útiles cuando necesitas:

  • Reutilizar consultas de forma dinámica.
  • Evitar repetir sentencias SQL manuales.
  • Centralizar la lógica de negocio en la base de datos.

Seguir leyendo:

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

Deja una respuesta

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)
error: Content is protected !!
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.