Introducción

Los procedimientos almacenados son un conjunto de instrucciones SQL que se almacenan en la base de datos y se pueden ejecutar como una unidad. Son útiles para encapsular lógica de negocio, mejorar el rendimiento y la seguridad, y facilitar el mantenimiento del código.

Ventajas de los procedimientos almacenados

  • Reutilización del código: Permiten encapsular lógica de negocio que puede ser reutilizada en diferentes partes de la aplicación.
  • Mejora del rendimiento: Al estar precompilados, su ejecución es más rápida que enviar múltiples instrucciones SQL desde la aplicación.
  • Seguridad: Pueden restringir el acceso directo a las tablas y proporcionar una capa de abstracción.
  • Mantenimiento: Facilitan el mantenimiento del código, ya que los cambios se realizan en un solo lugar.

Sintaxis básica

La sintaxis para crear un procedimiento almacenado puede variar ligeramente entre diferentes sistemas de gestión de bases de datos (DBMS). A continuación, se muestra un ejemplo básico en MySQL:

DELIMITER //

CREATE PROCEDURE nombre_del_procedimiento (IN parametro1 INT, OUT parametro2 INT)
BEGIN
    -- Cuerpo del procedimiento
    SELECT columna INTO parametro2
    FROM tabla
    WHERE id = parametro1;
END //

DELIMITER ;

Explicación del código

  • DELIMITER //: Cambia el delimitador de comandos para permitir el uso de ; dentro del procedimiento.
  • CREATE PROCEDURE nombre_del_procedimiento: Define el nombre del procedimiento.
  • (IN parametro1 INT, OUT parametro2 INT): Define los parámetros de entrada (IN) y salida (OUT).
  • BEGIN ... END: Delimita el cuerpo del procedimiento.
  • SELECT columna INTO parametro2 FROM tabla WHERE id = parametro1;: Ejemplo de una operación SQL dentro del procedimiento.

Ejemplo práctico

Supongamos que tenemos una tabla empleados con las siguientes columnas: id, nombre, salario. Queremos crear un procedimiento almacenado que aumente el salario de un empleado en un porcentaje dado.

Creación del procedimiento

DELIMITER //

CREATE PROCEDURE aumentar_salario (IN emp_id INT, IN porcentaje DECIMAL(5,2))
BEGIN
    UPDATE empleados
    SET salario = salario + (salario * (porcentaje / 100))
    WHERE id = emp_id;
END //

DELIMITER ;

Explicación del código

  • aumentar_salario: Nombre del procedimiento.
  • IN emp_id INT, IN porcentaje DECIMAL(5,2): Parámetros de entrada, emp_id para el ID del empleado y porcentaje para el aumento.
  • UPDATE empleados SET salario = salario + (salario * (porcentaje / 100)) WHERE id = emp_id;: Actualiza el salario del empleado con el ID especificado.

Ejecución del procedimiento

Para ejecutar el procedimiento, utilizamos la instrucción CALL:

CALL aumentar_salario(1, 10.00);

Este comando aumentará el salario del empleado con id = 1 en un 10%.

Ejercicio práctico

Ejercicio 1: Crear un procedimiento almacenado

Objetivo: Crear un procedimiento almacenado que inserte un nuevo registro en la tabla clientes.

Tabla clientes:

  • id (INT, PK)
  • nombre (VARCHAR)
  • email (VARCHAR)

Requisitos:

  • El procedimiento debe aceptar nombre y email como parámetros de entrada.
  • Debe insertar un nuevo registro en la tabla clientes.

Solución

DELIMITER //

CREATE PROCEDURE insertar_cliente (IN nombre_cliente VARCHAR(100), IN email_cliente VARCHAR(100))
BEGIN
    INSERT INTO clientes (nombre, email)
    VALUES (nombre_cliente, email_cliente);
END //

DELIMITER ;

Ejecución del procedimiento

CALL insertar_cliente('Juan Pérez', '[email protected]');

Conclusión

En esta sección, hemos aprendido qué son los procedimientos almacenados, sus ventajas, y cómo crearlos y utilizarlos en SQL. Los procedimientos almacenados son una herramienta poderosa para encapsular lógica de negocio, mejorar el rendimiento y la seguridad, y facilitar el mantenimiento del código. En el siguiente tema, exploraremos los triggers, otra característica avanzada de SQL que permite ejecutar código automáticamente en respuesta a ciertos eventos en la base de datos.

Curso de SQL

Módulo 1: Introducción a SQL

Módulo 2: Consultas básicas de SQL

Módulo 3: Trabajando con múltiples tablas

Módulo 4: Filtrado avanzado de datos

Módulo 5: Manipulación de datos

Módulo 6: Funciones avanzadas de SQL

Módulo 7: Subconsultas y consultas anidadas

Módulo 8: Índices y optimización de rendimiento

Módulo 9: Transacciones y concurrencia

Módulo 10: Temas avanzados

Módulo 11: SQL en la práctica

Módulo 12: Proyecto final

© Copyright 2024. Todos los derechos reservados