Curso de Bases de datos con SQL | Funciones 1

Curso de Bases de datos con SQL
Funciones

Curso de Bases de datos con SQL | Funciones 2

En SQL, una función es un objeto que recibe uno o más valores de entrada, realiza una operación y devuelve un valor como resultado.

Para probar un ejemplo, utilizaremos la siguiente base de datos:

CREATE TABLE Empleados (
    Id INT PRIMARY KEY,
    Nombre VARCHAR(50),
    Salario DECIMAL(10,2)
);

INSERT INTO Empleados (Id, Nombre, Salario) VALUES
(1, 'Ana', 1500.00),
(2, 'Luis', 2000.50),
(3, 'Marta', 1750.75);

Ahora crearemos una función que calcula un bono en función del sueldo del empleado:

DELIMITER //

CREATE FUNCTION CalcularBono(salario DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
    RETURN salario * 0.10;
END //

DELIMITER ;

En MySQL, al definir una función, tienes que decirle si el resultado depende solo de los parámetros de entrada o si puede cambiar aunque los parámetros sean iguales.

  • DETERMINISTIC: la función siempre devuelve el mismo resultado para los mismos valores de entrada.
    Ejemplo: RETURN salario * 0.10 → siempre da lo mismo si salario es el mismo.
  • NOT DETERMINISTIC: la función puede devolver resultados distintos aunque los parámetros sean iguales.
    Ejemplo: una función que use NOW(), RAND(), o que lea datos de una tabla.

Podemos probar la función con el siguiente código:

SELECT Nombre, Salario, CalcularBono(Salario) AS Bono FROM Empleados;

Para borrar una función:

DROP FUNCTION CalcularBono;