Table of Contents
Procedimiento PobtenerNombre_clienteYTituloLibro ()
En esta ocasión vemos un procedimiento explicado paso a paso, gracias a él podrás obtener el nombre de un cliente y el título de un libro concreto. Hemos usado dos tablas distintas, para unirlas usaremos inner join, como ya hemos visto en otras ocasiones.
📎Cómo activar la opción Do Not Track en Android
Este es el código completo:
-- La base de datos usada es la siguiente:
use bd_biblioteca;
-- Me gusta ver las tablas donde estoy trabajando:
select * from autores;
select * from categorias;
select * from libros;
select * from prestamos;
Esta es la consulta que haremos en el procedimiento, me gusta hacerla fuera para comprobar el resultado:
select p.nombre_cliente, l.titulo from prestamos as p
inner join libros as l on p.libro_id = l.Id where p.id = 4;
-- Si existe lo borrará.
DROP PROCEDURE IF EXISTS PobtenerNombre_clienteYTituloLibro;
DELIMITER //
-- Creamos el procedimiento:
CREATE PROCEDURE PobtenerNombre_clienteYTituloLibro
(in pId int, -- Parámetro de entrada, gracias a este id localizamos un id dentro de la tabla
out pnombre_cliente varchar (50), -- Parámetro de salida, lo utilizamos para extraer el nombre del cliente
out ptitulo varchar (50)) -- -- Parámetro de salida, lo utilizamos para extraer el título del libro
BEGIN
-- Manejamos los errores con Handler y hacemos un rollback. También imprimimos un resultado.
DECLARE exit handler for sqlexception
BEGIN
SELECT 'ERROR DE CONSULTA'; -- lanza un mensaje de error.
rollback;
END ;
/* unimos los resultados de dos tablas con inner join, utilizamos la clave ajena en prestamos para conectarcon la clave primaria de la tabla libro. */
-- * Recuerda usar el into para almacenar y el valor, de lo contrario daría nulo el resultado
select p.nombre_cliente, l.titulo into pnombre_cliente, ptitulo from prestamos as p
inner join libros as l
on p.libro_id = l.Id where p.Id = pId;
END //
DELIMITER ;
-- usamos el procedimiento:
set @vpId = 1; -- variable para el id
set @vpnombre_cliente = ''; variable para guardar el resultado del nombre del cliente.
set @vptitulo = ''; variable para guardar el resultado del título del libro.
-- Llamamos al procedimiento:
call PobtenerNombre_clienteYTituloLibro (@vpId, @vpnombre_cliente,@vptitulo);
-- Imprimimos el resultado:
select @vpnombre_cliente as 'Nombre del cliente',@vptitulo as 'Titulo del libro';
Resultado del procedimiento anterior:

* ERROR: En caso de no usar INTO:



Entradas recomendadas: