Cómo crear un USB booteable de Linux Mint 20.1 paso a paso

En este tutorial vamos a trabajar con la base de datos tiendaonline
para crear un procedimiento almacenado que nos permita recorrer un usuario específico mediante el uso de cursores en MySQL. El objetivo es comprobar si un cliente con un determinado id_cliente coincide con el nombre buscado, en este caso “Luis Pérez”.
procedimiento almacenado con un cursor para recorrer un usuario en MySQL |
Este procedimiento es muy útil cuando necesitamos validar registros concretos y aprender cómo funcionan los cursores, los manejadores de errores y los bucles dentro de MySQL. A continuación te explico paso a paso lo que hace cada parte del código:
Seleccionamos la base de datos donde trabajaremos:
USE tiendaonline;
Comprobamos que el cliente con id 2 es “Luis Pérez”:
SELECT c.nombre FROM clientes AS c WHERE id_cliente = 2;
Si el procedimiento ya existe, lo eliminamos para evitar conflictos:
DROP PROCEDURE IF EXISTS recorrerElUsuario;
Cambiamos el delimitador temporalmente para poder definir el procedimiento correctamente:
DELIMITER //
Creamos el procedimiento llamado recorrerElUsuario
, que recibe como parámetro de entrada un id
:
CREATE PROCEDURE recorrerElUsuario(IN p_Id INT)
BEGIN
Declaramos variables internas:
variableNombre
para guardar el nombre obtenido del cursor.
semaforo
para indicar cuándo ya no quedan filas por recorrer.
Declaramos el cursor cursorNombre
, que seleccionará el nombre del cliente con el id_cliente
indicado.
Creamos un manejador (CONTINUE HANDLER) que activa el “semáforo” cuando no hay más filas que recorrer.
Abrimos el cursor y lo recorremos en un bucle (miBucle: LOOP
).
Comprobamos si el nombre coincide con “Luis Pérez”:
Si coincide → mostramos el mensaje “El usuario existe en la base de datos”.
Si no coincide → mostramos el mensaje “El usuario no coincide en la base de datos”.
Cerramos el cursor y finalizamos el procedimiento.
Llamamos al procedimiento con el id deseado:
CALL recorrerElUsuario(2);
USE tiendaonline;
DROP PROCEDURE IF EXISTS recorrerElUsuario;
DELIMITER //
CREATE PROCEDURE recorrerElUsuario(IN p_Id INT)
BEGIN
DECLARE variableNombre VARCHAR(30);
DECLARE semaforo INT DEFAULT 0;
DECLARE cursorNombre CURSOR FOR
SELECT c.nombre FROM clientes AS c WHERE id_cliente = p_Id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET semaforo = 1;
OPEN cursorNombre;
miBucle: LOOP
FETCH cursorNombre INTO variableNombre;
IF semaforo = 1 THEN
LEAVE miBucle;
END IF;
IF variableNombre = 'Luis Pérez' THEN
SELECT CONCAT('El usuario existe en la base de datos: ', variableNombre) AS resultado;
LEAVE miBucle;
ELSE
SELECT CONCAT('El usuario no coincide en la base de datos: ', variableNombre) AS resultado;
END IF;
END LOOP;
CLOSE cursorNombre;
END //
DELIMITER ;
-- Llamada al procedimiento
CALL recorrerElUsuario(2);
Con este procedimiento almacenado hemos comprobado cómo recorrer registros con cursores en MySQL, controlar el flujo con un bucle LOOP y generar mensajes personalizados según la coincidencia del usuario.
Comentarios
Publicar un comentario