Tema SQL
Procedimientos almacenados
Rutinas con lógica SQL reutilizable invocadas con CALL o EXEC.
Descripción
Encapsulan actualizaciones complejas, control de transacciones y permisos delegados. Parámetros IN/OUT y lenguaje embebido varían (manual §26).
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
CREATE PROCEDURE nombre (param tipo, ...)
BEGIN
-- sentencias
END;
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Motor
- PostgreSQL favorece funciones; SQL Server CREATE PROCEDURE + EXEC.
Ejemplos
Ejemplo 1
-- Estilo genérico
CREATE PROCEDURE aplicar_descuento(IN pid INT, IN pct DECIMAL(5,2))
BEGIN
UPDATE productos SET precio = precio * (1 - pct/100) WHERE id = pid;
END;
Ejemplo 2
CALL sp_ejemplo(1); -- o EXEC en SQL Server
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.