¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
Procedimiento almacenado con cursor en MySQL para recorrer y validar un usuario por ID
Anuncios
Publicidad

Procedimiento almacenado con cursor en MySQL para recorrer y validar un usuario por ID

En este ejemplo crearemos un procedimiento almacenado en MySQL llamado recorrerUsuario, que emplea un cursor para recorrer el nombre de un cliente a partir de su id_cliente.

El procedimiento compara el valor recuperado con un nombre concreto (Marta Ruiz) y devuelve un mensaje indicando si coincide o no. De esta manera, podrás ver cómo funcionan:

✅ Los cursores en MySQL.
✅ El control de flujo mediante bucles.
✅ El uso de manejadores de condiciones (HANDLER) dentro de procedimientos almacenados.


1. Seleccionar la base de datos

USE tiendaonline;

2. Eliminar el procedimiento si ya existe

DROP PROCEDURE IF EXISTS recorrerUsuario;

3. Crear el procedimiento recorrerUsuario

Aquí está el código completo del procedimiento con cursor:

DELIMITER //
CREATE PROCEDURE recorrerUsuario(IN pId INT)
BEGIN
    DECLARE vNombre VARCHAR(30);
    DECLARE done INT DEFAULT 0;

    -- Declarar el cursor, selecciona el nombre de un cliente en función de su ID
    DECLARE curNombre CURSOR FOR
        SELECT c.nombre 
        FROM clientes AS c 
        WHERE id_cliente = pId;

    -- Handler: cuando no haya más filas, asigna 1 a la variable done
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    -- Abrimos el cursor
    OPEN curNombre;

    -- Bucle para recorrer resultados
    centros_loop: LOOP
        FETCH curNombre INTO vNombre;

        IF done = 1 THEN
            LEAVE centros_loop;
        END IF;

        -- Comparación con un nombre concreto
        IF vNombre = 'Marta Ruiz' THEN
            SELECT CONCAT('✅ Encontrado: ', vNombre) AS resultado;
            LEAVE centros_loop;
        ELSE
            SELECT CONCAT('❌ No coincide: ', vNombre) AS resultado;
        END IF;
    END LOOP;

    -- Cerramos el cursor
    CLOSE curNombre;
END //
DELIMITER ;

4. Llamar al procedimiento

Por ejemplo, si queremos recorrer el cliente con ID 3:

CALL recorrerUsuario(3);

5. Resultado esperado

Si el cliente con id_cliente = 3 se llama Marta Ruiz:

✅ Encontrado: Marta Ruiz

Si el cliente con id_cliente = 3 tiene otro nombre, por ejemplo Luis Pérez:

❌ No coincide: Luis Pérez

Este procedimiento almacenado demuestra cómo:

  • Usar un cursor en MySQL para recorrer resultados.
  • Manejar condiciones con HANDLER.
  • Implementar lógica de control (LOOP, LEAVE).
  • Personalizar la salida con SELECT CONCAT(...).

Este patrón es muy útil cuando necesitas procesar filas una a una y aplicar reglas de negocio más complejas que no se resuelven con una simple consulta SQL.


Si no existe:

Procedimiento almacenado con cursor en MySQL para recorrer un usuario
Procedimiento almacenado con cursor en MySQL para recorrer un usuario

Preguntas frecuentes (FAQ)

1. ¿Por qué usar un cursor si solo buscamos un usuario?
En este ejemplo el cursor se utiliza con fines didácticos. En la práctica, bastaría un SELECT ... WHERE id_cliente = X. Sin embargo, los cursores se vuelven muy útiles cuando necesitas recorrer varias filas.

2. ¿Qué hace DECLARE CONTINUE HANDLER FOR NOT FOUND?
Evita que el procedimiento lance un error cuando ya no quedan filas por recorrer. En su lugar, cambia el valor de la variable done, lo que permite salir del bucle.

3. ¿Cómo cambiar el nombre a buscar?
Puedes modificar la condición IF vNombre = 'Marta Ruiz' por cualquier otro nombre o incluso recibirlo como parámetro (IN pNombre VARCHAR(30)).

4. ¿Qué pasa si el ID no existe en la tabla?
El cursor no devolverá filas y, al entrar en el bucle, la variable done se pondrá en 1 inmediatamente. Por lo tanto, no habrá salida de texto.

Procedimiento almacenado con cursor en MySQL para recorrer un usuario

Seguir leyendo:

  • Instalación y configuración de MySQL
    Anuncios Publicidad Instalación y configuración de MySQL Para trabajar con MySQL no basta con conocer los comandos: primero hay que asegurarse de que la base de datos y sus herramientas estén bien instaladas y configuradas. Además, en algunos entornos es necesario activar extensiones o configurar el acceso desde cPanel. En esta vertical reunimos guías prácticas... Lee más: Instalación y configuración de MySQL
  • Gestión de bases de datos en MySQL
    Anuncios Publicidad Gestión de bases de datos en MySQL Una base de datos no solo necesita ser creada: también hay que mostrarla, administrarla, borrarla cuando ya no se necesita e incluso restaurarla en caso de pérdida o migración. En esta vertical reunimos guías esenciales para gestionar bases de datos en MySQL y SQL Server paso... Lee más: Gestión de bases de datos en MySQL
  • Inserción y manipulación de datos en MySQL
    Anuncios Publicidad Inserción y manipulación de datos en MySQL Insertar y manipular datos es una de las operaciones más comunes y esenciales en MySQL. Desde los comandos básicos para añadir registros hasta el uso de procedimientos almacenados que automatizan procesos, estas guías te ayudarán a manejar tu información de manera eficiente y segura. En esta... Lee más: Inserción y manipulación de datos en MySQL
  • Operadores SQL y consultas
    Anuncios Publicidad Operadores SQL y consultas En SQL, los operadores son herramientas fundamentales para construir consultas más potentes, flexibles y legibles. Gracias a ellos podemos filtrar, comparar y manipular datos de manera precisa. En esta vertical reunimos ejemplos prácticos de operadores muy usados en MySQL: BETWEEN, IN, EXISTS y DISTINCT. Cada guía incluye explicaciones paso... Lee más: Operadores SQL y consultas
  • Gestión de usuarios y permisos en MySQL
    Anuncios Publicidad Gestión de usuarios y permisos en MySQL La administración de usuarios en MySQL es clave para mantener la seguridad y el control en tus bases de datos. A través de esta vertical aprenderás a crear, eliminar y gestionar permisos de forma práctica y paso a paso. Aquí reunimos los artículos más útiles sobre... Lee más: Gestión de usuarios y permisos en MySQL
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

Deja una respuesta

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
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.