Crear procedimiento pobtenernombreYproducto()
En este procedimiento utilizamos un ID para comprobar y recuperar el nombre de un cliente y de un pedido en concreto. Lo haremos sobre la base de datos tienda de ropa. He llamado al procedimiento pobtenernombreYproducto()
.
🛠️ Procedimiento PobtenerNombre_clienteYTituloLibro ()
-- usamos la base de datos tienda de ropa:
use tienda_ropa;
-- mostramos las tablas presentes:
select * from clientes;
select * from pedidos;
-- vamos a realizar la consulta antes, de meterla en el procedimiento para ver si funciona:
/*
seleccionamos el nombre del cliente y del producto, como están en dos tablas distintas, utilizamos inner join para unir las dos tablas.
Utilizamos la clave ajena id_cliente de la tabla pedidos con la clave primaria de la tabla clientes.
*/
select c.nombre, p.producto from pedidos as p inner join clientes as c on p.id_cliente = c.id where c.id = 1;
-- comenzamos con el procedimiento, pero antes hagamos que se borre si ya existe:
DROP procedure if exists pobtenernombreYproducto;
-- colocamos los delimitadores por defecto:
DELIMITER //
-- Creamos un procedimiento con el nombre de 'pobtenernombreYproducto' utilizamos el id como parámetro de entrada para comprobar los datos. El parámetro out lo usaremos para recuperar el nombre del cliente, y el nombre del producto.
CREATE PROCEDURE pobtenernombreYproducto(in pId int, out pnombre_cliente varchar(30), out pnombre_producto varchar (30))
BEGIN
-- Aquí metemos el código a ejecutar, pero antes declaramos un handler para excepciones:
DECLARE EXIT handler for sqlexception
BEGIN
SELECT 'error';
rollback;
END ;
-- He añadido a la consulta el parámetro de entrada para hacer la consulta más eficiente y poder pasar los parámetros desde fuera del procedimiento:
-- Recuerda usar into para guardar el resultado de una consulta en una variable.
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 ;
-- usamos el procedimiento:
-- declaramos las variables:

set @vpId = 1;
set @vpnombre_cliente = '';
set @vpnombre_producto = '';
-- Llamamos al procedimiento:
call pobtenernombreYproducto(@vpId, @vpnombre_cliente, @vpnombre_producto);
-- mostramos el procedimiento:
select @vpnombre_cliente as 'Nombre del cliente', @vpnombre_producto as 'Nombre del producto';
Resultado:



Seguir leyendo: