Tema SQL
Funciones definidas por el usuario
Funciones que devuelven un escalar o conjunto y se usan en expresiones.
Descripción
Reutilizar cálculos en SELECT/WHERE. SQL invocable vs lenguaje procedural depende del motor (manual §27).
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 FUNCTION nombre (param tipo)
RETURNS tipo
AS $$
-- cuerpo
$$ LANGUAGE sql;
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.
- Inmutabilidad
- Funciones puras permiten optimización; efectos secundarios están restringidos en algunos motores.
Ejemplos
Ejemplo 1
CREATE FUNCTION impuesto(precio DECIMAL(10,2))
RETURNS DECIMAL(10,2)
LANGUAGE SQL
IMMUTABLE
AS $$ SELECT precio * 0.18; $$;
Ejemplo 2
SELECT mi_fn(10);
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.