Volver a la página principal
lunes 18 noviembre 2024
50

Cómo usar Stored Procedures en MariaDB

Las Stored Procedures (procedimientos almacenados) en MariaDB son bloques de código SQL que se almacenan en el servidor de la base de datos y se pueden reutilizar para realizar tareas específicas. Son útiles para encapsular lógica compleja, mejorar el rendimiento y garantizar la consistencia del código.

¿Qué son las Stored Procedures?

Una Stored Procedure es un conjunto de instrucciones SQL que se ejecuta como una unidad. Puede aceptar parámetros de entrada y salida, realizar operaciones como consultas, inserciones, actualizaciones o eliminaciones, y devolver resultados.

Ventajas de las Stored Procedures

1. Reutilización del código: Una vez creada, puedes llamarla múltiples veces.

2. Rendimiento optimizado: Reduce el tráfico entre la aplicación y la base de datos.

3. Seguridad: Restringe el acceso directo a las tablas.

4. Mantenibilidad: Centraliza la lógica de negocio en la base de datos.

Sintaxis básica de una Stored Procedure

DELIMITER //

CREATE PROCEDURE nombre_procedimiento ([parámetros])
BEGIN
    -- Cuerpo del procedimiento
END;
//

DELIMITER ;

Explicación de la sintaxis

Elemento Descripción
DELIMITER Cambia el delimitador para evitar conflictos con los puntos y comas (;).
CREATE PROCEDURE Define el procedimiento almacenado.
BEGIN...END Delimita el bloque de código del procedimiento.

Tipos de parámetros en Stored Procedures

1. IN: Parámetro de entrada. Solo puede recibir datos.

2. OUT: Parámetro de salida. Devuelve un valor al final del procedimiento.

3. INOUT: Parámetro que puede recibir y devolver datos.

Ejemplo con parámetros

CREATE PROCEDURE ejemplo_procedimiento(
    IN parametro_entrada INT,
    OUT parametro_salida INT
)
BEGIN
    SET parametro_salida = parametro_entrada * 2;
END;

Ejemplos de uso

1. Crear una Stored Procedure básica

Esta Stored Procedure lista todos los registros de una tabla llamada productos:

DELIMITER //

CREATE PROCEDURE listar_productos()
BEGIN
    SELECT * FROM productos;
END;
//

DELIMITER ;

Llamar al procedimiento:

CALL listar_productos();

2. Stored Procedure con parámetros de entrada

Este procedimiento busca productos por categoría:

DELIMITER //

CREATE PROCEDURE buscar_productos_por_categoria(IN categoria VARCHAR(50))
BEGIN
    SELECT * FROM productos WHERE categoria = categoria;
END;
//

DELIMITER ;

Llamar al procedimiento:

CALL buscar_productos_por_categoria('Electrónica');

3. Stored Procedure con parámetros de entrada y salida

Este procedimiento calcula el precio con descuento:

DELIMITER //

CREATE PROCEDURE calcular_descuento(
    IN precio_base DECIMAL(10,2),
    IN descuento_porcentaje DECIMAL(5,2),
    OUT precio_final DECIMAL(10,2)
)
BEGIN
    SET precio_final = precio_base - (precio_base * descuento_porcentaje / 100);
END;
//

DELIMITER ;

Llamar al procedimiento:

CALL calcular_descuento(100, 10, @resultado);
SELECT @resultado AS precio_final;

4. Stored Procedure con lógica condicional

Este procedimiento evalúa si un producto está disponible en el inventario:

DELIMITER //

CREATE PROCEDURE verificar_inventario(
    IN id_producto INT,
    OUT mensaje VARCHAR(100)
)
BEGIN
    DECLARE stock INT;

    SELECT cantidad INTO stock FROM inventario WHERE producto_id = id_producto;

    IF stock > 0 THEN
        SET mensaje = 'Producto disponible';
    ELSE
        SET mensaje = 'Producto agotado';
    END IF;
END;
//

DELIMITER ;

Llamar al procedimiento:

CALL verificar_inventario(1, @estado);
SELECT @estado AS estado_producto;

Eliminar una Stored Procedure

Para eliminar un procedimiento almacenado, usa:

DROP PROCEDURE IF EXISTS nombre_procedimiento;

Consideraciones importantes

1. Seguridad: Las Stored Procedures pueden restringir el acceso directo a las tablas, pero asegúrate de gestionar permisos correctamente.

2. Optimización: Aunque son rápidas, evita incluir lógica compleja que pueda ser más eficiente en el lado de la aplicación.

3. Depuración: Usa mensajes con SELECT o SIGNAL para depurar errores en procedimientos largos.

Referencias oficiales

Consulta la documentación oficial de MariaDB sobre Stored Procedures para más detalles y configuraciones avanzadas.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer