Procedimientos Almacenados en SQL: Gestión de Variables y Manejo de Excepciones
Clase 33 de 36 • Curso de Bases de Datos con SQL
Resumen
¿Cómo crear procedimientos almacenados con parámetros de entrada y salida?
El manejo de procederes almacenados en bases de datos como MySQL es crucial para optimizar transacciones complejas y asegurar la integridad de los datos. Aprender a utilizarlos eficazmente, incluyendo la interacción con parámetros de entrada y salida, puede mejorar significativamente tu competencia en el uso de bases de datos. En este instructivo, exploraremos un escenario práctico donde se emplean ambos tipos de parámetros, construyendo sobre la base de los procedimientos previamente almacenados. Al finalizar, tendrás una comprensión sólida de cómo gestionar transacciones y manejar excepciones.
¿Qué son los parámetros de entrada y salida?
En un procedimiento almacenado, los parámetros de entrada permiten pasar información a la operación. Utilizamos la palabra reservada IN
para definirlos, seguido por el nombre del parámetro y su tipo de dato. Por otro lado, los parámetros de salida, definidos con OUT
, sirven para devolver datos después de completar el procedimiento. Ambos tipos de parámetros comparten una estructura similar, diferenciándose solo por la palabra clave inicial.
¿Cómo influye el uso de variables y manejo de excepciones?
Las variables actúan como contenedores para resultados intermedios o finales dentro del procedimiento almacenado. Es importante no confundir parámetros y variables, pues en MySQL las variables se declaran con la palabra clave DECLARE
. En nuestro ejemplo, se utilizará una variable para almacenar el resultado del promedio de salario. Además, el manejo de excepciones es vital para cancelar transacciones ante errores, evitando inconsistencias en tus datos. Se utiliza ROLLBACK
para revertir la transacción fallida, junto con el uso de SELECT
para mostrar mensajes de error informativos al usuario.
¿Cuál es el proceso para crear un procedimiento almacenado?
-
Definición de Parámetros y Variables:
- Parámetros de entrada (primer nombre, apellido, departamento, salario, fecha).
- Parámetro de salida (resultado promedio).
- Declaración de la variable para almacenar el resultado del promedio.
-
Iniciación de la Transacción:
- Comenzar la transacción con
BEGIN
. - Iniciar la declaración de operaciones que incluye, en este ejemplo,
INSERT INTO
y una consulta de promedio de salario.
- Comenzar la transacción con
-
Manejo de Excepciones:
- Utilizar
SELECT
para definir el mensaje de error usandoAS
para etiquetarlo. - Establecer
ROLLBACK
para revertir operaciones en caso de error.
- Utilizar
-
Concluir Transacción Exitosa:
- Asignar el resultado del cálculo de promedio a la variable usando el símbolo
=
. - Confirmar la conclusión exitosa de la transacción con
COMMIT
. - Finalizar el procedimiento con
END
.
- Asignar el resultado del cálculo de promedio a la variable usando el símbolo
Ejemplo de sintaxis en MySQL
CREATE PROCEDURE CalcularPromedioSalario (
IN nombre VARCHAR(100),
IN apellido VARCHAR(100),
IN departamento VARCHAR(100),
IN salario DECIMAL(10,2),
IN fecha DATE,
OUT promedio DECIMAL(10,2)
)
BEGIN
DECLARE resultadoPromedio DECIMAL(10,2);
START TRANSACTION;
BEGIN
-- Insertar nueva entrada en la tabla empleados
INSERT INTO empleados (nombre, apellido, departamento, salario, fecha)
VALUES (nombre, apellido, departamento, salario, fecha);
-- Calcular el promedio de salarios
SELECT AVG(salario) INTO resultadoPromedio FROM empleados;
-- Asignar el promedio calculado al parámetro de salida
SET promedio = resultadoPromedio;
COMMIT;
EXCEPTION
BEGIN
-- Mensaje de error y rollback si algo falla
SELECT 'Error: no se pudo completar la operación.' AS mensajeError;
ROLLBACK;
END;
END;
END;
Este ejemplo ilustra un procedimiento almacenado que inserta datos y calcula un promedio. En caso de error, el rollback garantiza que no se realicen cambios parciales en los datos.
El compromiso con el aprendizaje de estas herramientas te habilitará para manejar transacciones complejas con confianza y eficiencia. Te animamos a experimentar y crear tus propios procedimientos, incrementando así tu conocimiento y habilidades en gestión de bases de datos. Si tienes preguntas o deseas contribuir al desarrollo de estas prácticas, ¡compártelo en los comentarios!