IOKELU
Nivel: Avanzado
💡 Ejecuta procedimientos almacenados:
Puedes probar cualquier procedimiento en nuestra consola interactiva: Abrir consola SQL →

Procedimientos almacenados en SQL: lógica encapsulada en la base de datos

Los procedimientos almacenados permiten encapsular lógica compleja dentro de la base de datos. Mejoran rendimiento, seguridad y reutilización del código.

1. ¿Qué es un procedimiento almacenado?

Es un bloque de código SQL que se almacena en la base de datos y puede ejecutarse múltiples veces.

2. Crear un procedimiento


CREATE PROCEDURE sumar_saldo(IN cantidad INT)
BEGIN
    UPDATE cuentas SET saldo = saldo + cantidad;
END;
    

3. Parámetros IN, OUT e INOUT


CREATE PROCEDURE obtener_saldo(IN id INT, OUT saldo_total INT)
BEGIN
    SELECT saldo INTO saldo_total FROM cuentas WHERE cuenta_id = id;
END;
    

CREATE PROCEDURE ajustar(INOUT valor INT)
BEGIN
    SET valor = valor * 2;
END;
    

4. Modificar procedimientos


ALTER PROCEDURE sumar_saldo COMMENT 'Actualiza el saldo de todas las cuentas';
    

5. Eliminar procedimientos


DROP PROCEDURE IF EXISTS sumar_saldo;
    

6. Ejemplos prácticos


-- Procedimiento para transferencias
CREATE PROCEDURE transferir(IN origen INT, IN destino INT, IN monto INT)
BEGIN
    UPDATE cuentas SET saldo = saldo - monto WHERE id = origen;
    UPDATE cuentas SET saldo = saldo + monto WHERE id = destino;
END;
    

-- Procedimiento con validación
CREATE PROCEDURE agregar_producto(IN nombre VARCHAR(50), IN precio INT)
BEGIN
    IF precio < 0 THEN
        SET precio = 0;
    END IF;
    INSERT INTO productos(nombre, precio) VALUES(nombre, precio);
END;
    

7. Ejercicios para practicar

8. Mini‑proyecto: API interna de procedimientos


CREATE PROCEDURE registrar_venta(IN producto INT, IN cantidad INT)
BEGIN
    INSERT INTO ventas(producto_id, cantidad, fecha)
    VALUES(producto, cantidad, NOW());
END;
    

9. Errores comunes

10. Preguntas frecuentes

¿Los procedimientos mejoran el rendimiento?

Sí, al ejecutarse dentro del motor.

¿Son portables entre bases?

No siempre, la sintaxis varía.


Siguiente guía

SQL Avanzado – Funciones almacenadas →