Café y Código

3. Funciones Personalizadas (UDF) 🧮

¿Funciones vs Procedimientos?

Las Funciones Definidas por el Usuario (UDF) se parecen muchísimo a los Procedimientos Almacenados, pero tienen una diferencia fundamental: Una función TIENE que retornar un valor (RETURN).

Mientras que un Procedure suele hacer trabajo sucio (Inserts, Updates gruesos de lógica de negocio), una Función se diseña para procesar datos y devolver una respuesta plana.

Creando una Función

La sintaxis requiere que especifiques qué tipo de dato va a devolver en la cabecera usando RETURN.

SQL
1 -- Función para calcular un descuento simple
2 CREATE OR REPLACE FUNCTION CalcularDescuentoVIP (
3 p_precio_original IN NUMBER
4 )
5 RETURN NUMBER -- Declaramos qué tipo de dato retorna
6 IS
7 v_precio_final NUMBER;
8 BEGIN
9 v_precio_final := p_precio_original * 0.85; -- 15% de descuento
10
11 RETURN v_precio_final; -- Obligatorio devolver el valor
12 END CalcularDescuentoVIP;

El superpoder: Usarlas en un SELECT

Debido a que devuelven un valor puro, ¡puedes inyectar tus propias funciones personalizadas directamente adentro de una consulta SQL normal!

SQL
1 -- Podemos usar la función directamente en nuestro query:
2 SELECT
3 nombre_producto,
4 precio AS precio_normal,
5 CalcularDescuentoVIP(precio) AS precio_con_descuento
6 FROM productos
7 WHERE categoria = 'Lujo';
Buena Práctica: Evita hacer UPDATE o INSERT pesados adentro de una Función. Las funciones sirven para leer y calcular. Deja la escritura masiva para los Procedures.

🎮 Analizando Retornos

Si en medio del código de una función escribes RETURN 100;, ¿qué ocurre con el resto del código que esté debajo de esa línea en el bloque BEGIN?

👁️ Ver respuesta sugerida

No se ejecuta. La palabra clave RETURN termina inmediatamente la función y devuelve el valor al programa que la invocó.

Ponte a prueba

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.