0% encontró este documento útil (0 votos)
22 vistas18 páginas

Procedimiento Almacenado Terminado

El documento detalla los procedimientos almacenados en MySQL, destacando su utilidad para automatizar tareas en bases de datos y mejorar el rendimiento y la seguridad del sistema. Se explican conceptos clave, tipos de parámetros y se presentan casos prácticos en entornos como tiendas en línea, bancos y bibliotecas. Además, se concluye que su correcta implementación es esencial para optimizar el manejo de datos y garantizar sistemas robustos y escalables.

Cargado por

wisner791
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas18 páginas

Procedimiento Almacenado Terminado

El documento detalla los procedimientos almacenados en MySQL, destacando su utilidad para automatizar tareas en bases de datos y mejorar el rendimiento y la seguridad del sistema. Se explican conceptos clave, tipos de parámetros y se presentan casos prácticos en entornos como tiendas en línea, bancos y bibliotecas. Además, se concluye que su correcta implementación es esencial para optimizar el manejo de datos y garantizar sistemas robustos y escalables.

Cargado por

wisner791
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

INSTITUTO DE FORMACIÓN PROFESIONAL

Dirección General de Educación Técnica


Área: Tecnología de la Información y la Comunicación
Carrera: Técnico Superior en TIC en Desarrollo de Sistemas Informáticos
PROCEDIMIENTO ALMACENADO

Instructor: Lic. Diego González


Autores:
- Diego Iván Cantero González
- Mirian Susana Cáceres Martínez
- Elvira Beatriz Fariña Rivas
- Sara Rebeca Domínguez Giménez
TIC
1er Semestre
San Lorenzo – Paraguay
2025
1
Procedimientos Almacenados
Resumen

Este documento explora los procedimientos almacenados en MySQL como herramienta

para automatizar tareas en bases de datos. Se presentan definiciones, ventajas, sintaxis y casos

prácticos en entornos como tiendas en línea, bancos y bibliotecas. Los procedimientos

almacenados mejoran el rendimiento y la seguridad del sistema, facilitando operaciones

eficientes y confiables.
2
Procedimientos Almacenados
Introducción

Imagina que cada vez que realizas una operación en una base de datos—como registrar

un empleado o actualizar un pedido—debes escribir manualmente la misma consulta SQL una y

otra vez. Ahora, piensa en una empresa con miles de transacciones diarias. ¿Cuánto tiempo y

recursos se perderían?

Aquí es donde los procedimientos almacenados en MySQL entran en acción. Estas

poderosas herramientas permiten automatizar procesos, optimizar el rendimiento y

garantizar la seguridad de los datos, evitando errores y mejorando la eficiencia del sistema.

En este trabajo exploraremos cómo funcionan los procedimientos almacenados, sus

ventajas clave y casos prácticos que demuestran su impacto en la gestión de bases de datos.

Desde la validación de información hasta la ejecución de transacciones seguras, comprender

su uso es esencial para el desarrollo de aplicaciones escalables y eficientes.


3
Procedimientos Almacenados
Objetivos

 General: Explicar la utilidad y funcionamiento de los procedimientos

almacenados en bases de datos.

 Específicos:

 Definir qué es un procedimiento almacenado y su importancia.

 Analizar casos de uso en entornos empresariales.

 Implementar un ejercicio práctico para demostrar su aplicación.


4
Procedimientos Almacenados
¿Qué es un procedimiento almacenado?

Un procedimiento almacenado es un conjunto de instrucciones SQL que se guardan en la

base de datos y pueden ejecutarse como una única unidad. Se utilizan para automatizar tareas

repetitivas, mejorar el rendimiento y aumentar la seguridad, ya que permiten controlar el acceso

y la manipulación de datos sin exponer consultas directas.

Forma de uso

DELIMITER //

CREATE PROCEDURE nombre_procedimiento (

IN parametro1 VARCHAR (50),

OUT parametro2 INT

BEGIN

-- Lógica del procedimiento

SELECT * FROM tabla WHERE campo = parametro1;

SELECT ROW_COUNT () INTO parametro2;

END //

DELIMITER;
5
Procedimientos Almacenados
Tipos de parámetros

Parámetros de entrada (IN)

DELIMITER //

CREATE PROCEDURE BuscarClientePorNombre (

IN p_nombre VARCHAR (100)

BEGIN

SELECT *

FROM clientes

WHERE nombre LIKE CONCAT ('%', p_nombre, '%');

END //

DELIMITER;

CALL BuscarClientePorNombre('Carlos');

Parámetros de salida (OUT)

DELIMITER //

CREATE PROCEDURE ContarEmpleadosPorSalario (

IN p_umbralSalario DECIMAL (10,2),

OUT p_totalEmpleados INT

BEGIN

SELECT COUNT (*) INTO p_totalEmpleados


6
Procedimientos Almacenados
FROM empleados

WHERE salario > p_umbralSalario;

END //

DELIMITER;

CALL ContarEmpleadosPorSalario (3000, @cantidad);

SELECT @cantidad AS TotalEmpleados;

Parámetros de Entrada/Salida (INOUT)

DELIMITER //

CREATE PROCEDURE AcumularVentas (

IN p_valorVenta DECIMAL (10,2),

INOUT p_totalVentas DECIMAL (10,2)

BEGIN

SET p_totalVentas = p_totalVentas + p_valorVenta;

END //

DELIMITER;

SET @totalVentas = 0;

CALL AcumularVentas (150.00, @totalVentas);

SELECT @totalVentas AS TotalVentas;


7
Procedimientos Almacenados
Casos prácticos

1- Tienda Online - Procesar Venta

Problema: Cuando un cliente compra, necesitas hacer 3 cosas: registrar venta, reducir

stock y calcular impuestos.

Solución: Un procedimiento que hace todo en una sola llamada.

DELIMITER //

CREATE PROCEDURE procesar_venta (

IN producto_id INT,

IN cantidad INT,

IN cliente_id INT,

OUT mensaje VARCHAR (200),

OUT total_final DECIMAL (10,2)

BEGIN

DECLARE precio_producto DECIMAL (10,2);

DECLARE stock_actual INT;

DECLARE subtotal DECIMAL (10,2);

DECLARE impuestos DECIMAL (10,2);


8
Procedimientos Almacenados
SELECT precio, stock INTO precio_producto, stock_actual

FROM productos

WHERE id = producto_id;

IF stock_actual >= cantidad THEN

SET subtotal = precio_producto * cantidad;

SET impuestos = subtotal * 0.10;

SET total_final = subtotal + impuestos;

INSERT INTO ventas (cliente_id, producto_id, cantidad, subtotal, impuestos, total)

VALUES (cliente_id, producto_id, cantidad, subtotal, impuestos, total_final)

UPDATE productos

SET stock = stock - cantidad

WHERE id = producto_id;

SET mensaje = 'Venta procesada correctamente';

ELSE

SET mensaje = CONCAT ('Error: Solo hay ', stock_actual, ' unidades disponibles');

SET total_final = 0;
9
Procedimientos Almacenados
END IF;

END //

DELIMITER;

2- Banco - Transferencia de Dinero

Problema: Transferir dinero entre cuentas verificando fondos y registrando movimientos.

Solución: Un procedimiento que hace la transferencia completa de forma segura.

DELIMITER //

CREATE PROCEDURE transferir_dinero (

IN cuenta_origen INT,

IN cuenta_destino INT,

IN monto DECIMAL (10,2),

OUT resultado VARCHAR (200)

BEGIN

DECLARE saldo_origen DECIMAL (10,2);

DECLARE cuenta_origen_existe INT DEFAULT 0;

DECLARE cuenta_destino_existe INT DEFAULT 0;


10
Procedimientos Almacenados
SELECT COUNT (*) INTO cuenta_origen_existe

FROM cuentas WHERE numero_cuenta = cuenta_origen;

SELECT COUNT (*) INTO cuenta_destino_existe

FROM cuentas WHERE numero_cuenta = cuenta_destino;

IF cuenta_origen_existe = 0 THEN

SET resultado = 'Error: Cuenta origen no existe';

ELSEIF cuenta_destino_existe = 0 THEN

SET resultado = 'Error: Cuenta destino no existe';

ELSE

SELECT saldo INTO saldo_origen

FROM cuentas WHERE numero_cuenta = cuenta_origen;

IF saldo_origen >= monto THEN

UPDATE cuentas SET saldo = saldo - monto

WHERE numero_cuenta = cuenta_origen;

UPDATE cuentas SET saldo = saldo + monto


11
Procedimientos Almacenados
WHERE numero_cuenta = cuenta_destino;

INSERT INTO movimientos (cuenta_origen, cuenta_destino, monto, fecha, tipo)

VALUES (cuenta_origen, cuenta_destino, monto, NOW (),

'TRANSFERENCIA');

SET resultado = CONCAT ('Transferencia exitosa: $', monto);

ELSE

SET resultado = CONCAT ('Error: Saldo insuficiente. Disponible: $',

saldo_origen);

END IF

END IF;

END //

DELIMITER;

CALL transferir_dinero (12345, 67890, 500.00, @resultado);

SELECT @resultado;

3- Biblioteca - Préstamo de Libros


12
Procedimientos Almacenados
Problema: Prestar un libro verificando disponibilidad y límites del usuario.

Solución: Un procedimiento que maneja todo el proceso de préstamo.

DELIMITER //

CREATE PROCEDURE prestar_libro (

IN libro_id INT,

IN usuario_id INT,

IN dias_prestamo INT,

OUT mensaje VARCHAR (200),

OUT fecha_devolucion DATE

BEGIN

DECLARE libro_disponible INT DEFAULT 0;

DECLARE usuario_valido INT DEFAULT 0;

DECLARE prestamos_pendientes INT DEFAULT 0;

DECLARE titulo_libro VARCHAR (200);

SELECT COUNT (*), titulo INTO libro_disponible, titulo_libro

FROM libros
13
Procedimientos Almacenados
WHERE id = libro_id AND estado = 'DISPONIBLE'

GROUP BY título;

SELECT COUNT (*) INTO usuario_valido

FROM usuarios WHERE id = usuario_id;

-- Verificar préstamos pendientes del usuario

SELECT COUNT (*) INTO prestamos_pendientes

FROM prestamos

WHERE usuario_id = usuario_id AND estado = 'ACTIVO';

IF libro_disponible = 0 THEN

SET mensaje = 'Error: Libro no disponible';

SET fecha_devolucion = NULL;

ELSEIF usuario_valido = 0 THEN

SET mensaje = 'Error: Usuario no válido';

SET fecha_devolucion = NULL;

ELSEIF prestamos_pendientes >= 3 THEN


14
Procedimientos Almacenados
SET mensaje = 'Error: Usuario tiene 3 préstamos activos (límite máximo)';

SET fecha_devolucion = NULL;

ELSE

SET fecha_devolucion = DATE_ADD (CURDATE (), INTERVAL dias_prestamo

DAY);

INSERT INTO prestamos (libro_id, usuario_id, fecha_prestamo, fecha_devolucion,

estado)

VALUES (libro_id, usuario_id, CURDATE (), fecha_devolucion, 'ACTIVO');

UPDATE libros

SET estado = 'PRESTADO'

WHERE id = libro_id;

SET mensaje = CONCAT ('Préstamo exitoso: "', titulo_libro, '" - Devolver antes del:

', fecha_devolucion);

END IF;

END //

DELIMITER;
15
Procedimientos Almacenados
CALL prestar_libro (101, 789, 14, @mensaje, @fecha_dev);

SELECT @mensaje, @fecha_dev;

Ejercicio para hacer en clase

Realizar un Procedimiento Almacenado que sume dos números.

Realizar un Procedimiento Almacenado que inserte clientes.


16
Procedimientos Almacenados
conclusión

Los procedimientos almacenados en MySQL representan una herramienta fundamental

para la gestión eficiente de bases de datos, permitiendo automatizar procesos, optimizar

consultas y mejorar la seguridad de los datos. Su uso adecuado facilita la ejecución de

operaciones repetitivas y garantiza una mejor organización en aplicaciones empresariales.

Desde la actualización automática de registros hasta la validación de información antes de

su inserción, los procedimientos almacenados permiten reducir errores y mejorar el

rendimiento del sistema. Además, al integrar transacciones, se asegura que las operaciones se

ejecuten correctamente o se reviertan si surge un problema, evitando inconsistencias en la base

de datos.

Por lo tanto, comprender y aplicar correctamente los procedimientos almacenados no solo

optimiza el manejo de datos, sino que también reduce la carga de procesamiento en el

servidor, mejorando la eficiencia general del sistema. En el contexto actual, donde el acceso

rápido y seguro a la información es clave, su implementación resulta esencial para garantizar

sistemas robustos y escalables.


17
Procedimientos Almacenados
referencias

Digital Ocean. (2023). How to use stored procedures in MySQL.

https://www.digitalocean.com/community/tutorials/how-to-use-stored-procedures-in-mysql

ISO/IEC. (2003). SQL:2003 Standard - Information technology — Database languages

— SQL. International Organization for Standardization.

MySQLTutorial.org. (2023). MySQL stored procedures.

https://www.mysqltutorial.org/mysql-storedprocedure/

Oracle Corporation. (2024). MySQL 8.4 reference manual - CREATE PROCEDURE and

CREATE FUNCTION statements. https://dev.mysql.com/doc/refman/8.4/en/create-

procedure.html

Oracle Corporation. (2024). MySQL 8.4 reference manual - Using stored routines.

https://dev.mysql.com/doc/refman/8.4/en/stored-routines.html

Oracle Corporation. (2024). MySQL 8.4 FAQ: Stored procedures and functions.

https://dev.mysql.com/doc/refman/8.4/en/faqs-stored-procs.html

PhoenixNAP. (2025). MySQL stored procedures {Create, List, Alter, & Drop}.

https://phoenixnap.com/kb/mysql-stored-procedure

Sharma, A. (2021). Learn MySQL: The basics of MySQL stored procedures. SQLShack.

https://www.sqlshack.com/learn-mysql-the-basics-of-mysql-stored-procedures/

Tutorialspoint. (2025). MySQL stored procedure.

https://www.tutorialspoint.com/mysql/mysql-storedprocedure.htm

También podría gustarte