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 yporcentaje
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
:
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
yemail
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
- Instrucción SELECT
- Filtrando datos con WHERE
- Ordenando datos con ORDER BY
- Limitando resultados con LIMIT
Módulo 3: Trabajando con múltiples tablas
Módulo 4: Filtrado avanzado de datos
- Usando LIKE para coincidencia de patrones
- Operadores IN y BETWEEN
- Valores NULL y IS NULL
- Agregando datos con GROUP BY
- Cláusula HAVING
Módulo 5: Manipulación de datos
Módulo 6: Funciones avanzadas de SQL
Módulo 7: Subconsultas y consultas anidadas
- Introducción a subconsultas
- Subconsultas correlacionadas
- EXISTS y NOT EXISTS
- Usando subconsultas en cláusulas SELECT, FROM y WHERE
Módulo 8: Índices y optimización de rendimiento
- Entendiendo los índices
- Creación y gestión de índices
- Técnicas de optimización de consultas
- Análisis del rendimiento de consultas
Módulo 9: Transacciones y concurrencia
- Introducción a las transacciones
- Propiedades ACID
- Instrucciones de control de transacciones
- Manejo de concurrencia