Posted in

Stored Procedures y Functions: El día que Vint Cerf entró al servidor de MySQL

Ilustración que representa a Vint Cerf explorando un servidor MySQL, destacando la importancia de las stored procedures y functions en la automatización y eficiencia de las bases de datos

Inspirada en el nacimiento del protocolo TCP/IP y la expansión de ARPANET (1983)

Capítulo I: El Reino del Copia y Pega

En los servidores más antiguos de MySQL, los desarrolladores vivían bajo el cruel dominio del CTRL+C, CTRL+V. Cada operación se escribía desde cero, como si los scripts fueran poesías de amor no correspondido.

—¿Otra vez vas a escribir ese INSERT con tres joins? —preguntó un DBA exhausto a su colega de cubículo.

—Es que así lo entiendo mejor… —respondió el aprendiz, rodeado de archivos .sql desordenados y variables llamadas cosax, cosay, y cosaz.

La confusión era tal que el Consejo de Código Limpio convocó a una reunión urgente. El caos debía acabar.

Y en ese momento, ocurrió lo impensable: el mismísimo Vint Cerf, uno de los Padre del Internet, apareció con un pendrive en la mano y una ceja arqueada de desaprobación.

—Ustedes están en 2025 y todavía no usan Stored Procedures ni Functions. Siento vergüenza ajena.


Capítulo II: El Procedimiento Perdido

Cerf, aún con su traje de los 80’s y sus gafas de sabio eterno, insertó el pendrive y proyectó una línea de código en la pantalla:

DELIMITER //

CREATE PROCEDURE RegistrarAcceso (
    IN usuario VARCHAR(50),
    IN ip_acceso VARCHAR(20)
)
BEGIN
    INSERT INTO bitacora_accesos (usuario, ip, fecha)
    VALUES (usuario, ip_acceso, NOW());
END;
//

—Esto, muchachos, es un procedimiento almacenado. No más repetir veinte líneas cada vez que alguien entra al sistema.

Uno de los desarrolladores, medio dormido, preguntó:

—¿Y eso sirve para más que rellenar actas?

Cerf sonrió.

—Sirve para que no te despidan por errores en producción, campeón.


Capítulo III: Funciones para Humanos (y No Para Robots)

Después del asombro inicial, apareció Elizabeth Feinler, pionera de los primeros directorios de Internet, quien traía funciones listas para evaluar.

DELIMITER //

CREATE FUNCTION DiasDeConexion(fecha_inicio DATE)
RETURNS INT
BEGIN
    RETURN DATEDIFF(CURDATE(), fecha_inicio);
END;
//

—Esta function —dijo Elizabeth— es más útil que esos Excel con macros de dudosa procedencia que usan para todo.

—¿Y se puede usar en un SELECT común y silvestre?

—Como las mejores ideas: simple y directa.

SELECT nombre, DiasDeConexion(fecha_registro) AS dias FROM usuarios;

Los DBA tomaron nota. El sarcasmo de los sabios del pasado los hería… pero de forma constructiva.


Capítulo IV: El Club del Código Copiado

No todo fue aplauso y aprendizaje. Un grupo secreto llamado CCC (Club del Código Copiado) se opuso rotundamente:

—¡El uso de funciones y procedimientos estandariza demasiado! —gritaban— ¡Nos quita el toque artístico!

Cerf los miró con lástima.

—Ustedes no son artistas, son un bug con patas. Lo único que estandarizan es el caos.

Como prueba de eficiencia, se ejecutó el mismo flujo con y sin procedimientos. Resultado: el CCC fue relegado a mantener el archivo legacy_v2_final_FINAL_bueno_de_veras.sql.


Capítulo V: El Manifiesto del Código Reutilizable

Los sabios firmaron un manifiesto que colgaron sobre la consola principal:

“Reescribir lógica ya escrita es la forma más elegante de perder el tiempo.”

Desde entonces, en MySQL se adoptó una nueva doctrina: si vas a hacer algo más de dos veces, encapsúlalo o enfréntate al juicio de Cerf y Feinler.

Los procedimientos y funciones se convirtieron en los verdaderos guardianes de la eficiencia… aunque nadie volvió a ver ese pendrive de Cerf.


Moraleja Final:

“Si repites código, no es eficiencia, es castigo”

Las Stored Procedures y Functions no están para decorar, están para rescatarte del infierno del copy-paste. Úsalas, ámalas, y tu base de datos —y tu yo del futuro— te lo agradecerán.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *