Curso de Bases de datos con SQL
Funciones
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 sisalarioes el mismo.NOT DETERMINISTIC: la función puede devolver resultados distintos aunque los parámetros sean iguales.
Ejemplo: una función que useNOW(),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;