¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)
Procedimientos almacenados en MySQL: Ejemplos, cursores y casos prácticos
Anuncios
Publicidad

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

Aprende paso a paso cómo crear, ejecutar y optimizar procedimientos almacenados en MySQL, desde los más simples hasta los que usan cursores, variables y validaciones lógicas.
Esta guía pilar reúne todos los ejemplos prácticos y artículos de la serie, para que domines el uso de CREATE PROCEDURE como un profesional.


¿Qué es un procedimiento almacenado?

Un procedimiento almacenado (o Stored Procedure) es un bloque de código SQL guardado en el servidor MySQL que ejecuta una o varias sentencias de forma automática.
Se utiliza para automatizar tareas repetitivas, validar datos, insertar registros o procesar resultados complejos sin necesidad de escribir las mismas consultas una y otra vez.

En resumen: un procedimiento almacenado es como una función, pero puede modificar datos y no necesariamente devuelve un valor.


Sintaxis básica de un procedimiento en MySQL

DELIMITER //
CREATE PROCEDURE nombreProcedimiento()
BEGIN
  -- Aquí va el código SQL
END //
DELIMITER ;

Luego puedes ejecutarlo con:

CALL nombreProcedimiento();

Procedimientos almacenados paso a paso

Procedimientos con parámetros

Procedimientos con cursores

Procedimientos para inserción y validación


Ejemplo completo con CURSOR y validación

A continuación, un ejemplo de procedimiento almacenado que recorre una tabla de usuarios y valida cada ID usando un cursor:

DELIMITER //
CREATE PROCEDURE validarUsuarios()
BEGIN
  DECLARE fin INT DEFAULT 0;
  DECLARE vId INT;
  DECLARE vNombre VARCHAR(100);
  DECLARE cur CURSOR FOR SELECT id, nombre FROM usuarios;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET fin = 1;

  OPEN cur;
  ciclo: LOOP
    FETCH cur INTO vId, vNombre;
    IF fin = 1 THEN
      LEAVE ciclo;
    END IF;

    IF vId IS NOT NULL THEN
      SELECT CONCAT('Usuario válido: ', vNombre) AS resultado;
    ELSE
      SELECT 'Usuario no válido' AS resultado;
    END IF;
  END LOOP;
  CLOSE cur;
END //
DELIMITER ;

Explicación:

  1. DECLARE CURSOR crea el cursor con la consulta de usuarios.
  2. FETCH extrae fila por fila los datos del cursor.
  3. LOOP / LEAVE controlan el bucle.
  4. CONTINUE HANDLER detecta cuándo no hay más filas.
  5. El procedimiento imprime un mensaje de validación para cada usuario.

🧩 Ventajas de los procedimientos almacenados

  1. Mejoran el rendimiento: se ejecutan en el servidor, evitando enviar consultas repetidas.
  2. Aumentan la seguridad: puedes dar permisos solo para ejecutar procedimientos, sin exponer las tablas.
  3. Reutilización de lógica: centralizas operaciones comunes (inserciones, validaciones, reportes).
  4. Mantenimiento sencillo: cambias la lógica en un solo lugar.
  5. Facilitan integraciones: son útiles al conectar MySQL con aplicaciones externas (PHP, Python, etc.).

Buenas prácticas

  • Siempre usa DELIMITER // para evitar errores de interpretación.
  • Declara tus variables al inicio del bloque.
  • Controla errores con DECLARE HANDLER.
  • Comenta el código para mantener claridad.
  • No abuses de cursores si puedes resolverlo con una sola sentencia SQL.

También te puede interesar

¡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.