¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)
Cómo crear un procedimiento con FETCH en MySQL (ejemplo paso a paso)
Portada » Cómo crear un procedimiento con FETCH en MySQL (ejemplo paso a paso)

Cómo crear un procedimiento con FETCH en MySQL (ejemplo paso a paso)

Anuncios
Publicidad

En este tutorial aprenderás cómo crear un procedimiento almacenado en MySQL utilizando cursores y el comando FETCH.
El objetivo es recorrer la columna titulo de la tabla libros dentro de la base de datos bd_biblioteca.

Además, se implementa un handler de errores para manejar excepciones de SQL, lo que permite capturar y controlar problemas al ejecutar el procedimiento.


1. Seleccionar la base de datos

USE bd_biblioteca;

2. Consultar la tabla de trabajo

Revisamos el contenido de la tabla libros, sobre la que recorreremos los títulos:

SELECT * FROM libros;

3. Eliminar el procedimiento si existe

Antes de crearlo, eliminamos cualquier versión previa:

DROP PROCEDURE IF EXISTS precorrerTitulo;

4. Definir el delimitador

DELIMITER //

5. Crear el procedimiento precorrerTitulo

Aquí está el procedimiento completo:

CREATE PROCEDURE precorrerTitulo()
BEGIN
    -- Variable semáforo para salir del bucle
    DECLARE semaforo BOOLEAN DEFAULT FALSE;

    -- Variable para almacenar el título
    DECLARE vtitulo VARCHAR(100);

    -- Cursor para recorrer los títulos de la tabla libros
    DECLARE c CURSOR FOR SELECT titulo FROM libros;

    -- Handler para cuando no se encuentren más filas
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET semaforo = TRUE;

    -- Handler para capturar errores SQL
    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
    BEGIN
        SELECT 'ERROR';
        ROLLBACK;
    END;

    -- Abrimos el cursor
    OPEN c;

    -- Bucle para recorrer los títulos
    recorrer: LOOP
        FETCH c INTO vtitulo;

        IF semaforo THEN
            LEAVE recorrer;
        END IF;

        -- Mostrar cada título encontrado
        SELECT vtitulo AS 'título del libro';
    END LOOP;

    -- Cerramos el cursor
    CLOSE c;

END;
//

6. Restaurar el delimitador

DELIMITER ;

7. Ejecutar el procedimiento

CALL precorrerTitulo();

Resultado esperado

Cuando ejecutes el procedimiento, MySQL recorrerá todos los registros de la tabla libros y devolverá los títulos uno por uno.

Ejemplo de salida (dependiendo de los datos de tu tabla):

+-----------------+
| título del libro|
+-----------------+
| El Quijote      |
| Cien años...    |
| Rayuela         |
| ...             |
+-----------------+

Con este procedimiento:

  • Aprendiste a usar cursores y FETCH en MySQL.
  • Implementaste un manejador de errores (EXIT HANDLER) para mayor seguridad.
  • Recorriste dinámicamente los resultados de una consulta.

Este tipo de procedimiento es muy útil cuando necesitas procesar registros uno a uno en lugar de hacerlo de forma masiva.


❓ Preguntas frecuentes (FAQ)

1. ¿Qué es un cursor en MySQL?
Un cursor es un mecanismo que permite recorrer fila por fila los resultados de una consulta SQL.

2. ¿Por qué usamos un semáforo (BOOLEAN)?
Sirve como señal para saber cuándo se han recorrido todas las filas y salir del bucle.

3. ¿Qué hace el CONTINUE HANDLER FOR NOT FOUND?
Indica que cuando no se encuentren más filas en el cursor, se active el semáforo y se finalice el bucle.

4. ¿Qué diferencia hay entre CONTINUE HANDLER y EXIT HANDLER?

  • CONTINUE HANDLER: Maneja eventos específicos (como NOT FOUND) y permite seguir con el flujo.
  • EXIT HANDLER: Se ejecuta ante errores graves (SQLEXCEPTION) y corta el proceso.
Crear un procedimiento almacenado  precorrerTitulo ()

5. ¿Puedo recorrer varias columnas con FETCH?
Sí. Solo debes declarar más variables y añadirlas en el FETCH. Ejemplo:

DECLARE vtitulo VARCHAR(100); DECLARE vautor VARCHAR(100); FETCH c INTO vtitulo, vautor;

Crear un procedimiento almacenado  precorrerTitulo ()

Te puede interesar:

Procedimientos almacenados en MySQL: Ejemplos, cursores y casos prácticos

últimas entradas:

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

Deja un comentario

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