SQL Server | Funciones definidas por el usuario
Una característica muy importante de los Sistemas Gestores de Bases de Datos (SGBD), es la capacidad de procesar lógica de negocios relativa a los datos que maneja, es decir, si mantenemos la idea de un sistema bajo el modelo MVC, no se le estarían quitando funciones a la capa del controlador sino manteniendo la gestión de datos dentro del Modelo de datos, es decir en el gestor de Base de Datos, ahora mismo vamos a explorar estas funcioes .
Funciones escalares:
Una función escalar devuelve un solo valor basado en los parámetros de entrada.
Puedes crear una función escalar utilizando la siguiente sintaxis:
CREATE FUNCTION nombre_funcion (@parametro tipo_dato)
RETURNS tipo_dato_devuelto
AS
BEGIN
-- Lógica de la función
RETURN valor_devuelto;
END;
Por ejemplo, aquí hay una función escalar que calcula el área de un círculo dado su radio:
CREATE FUNCTION calcular_area_circulo (@radio FLOAT)
RETURNS FLOAT
AS
BEGIN
DECLARE @area FLOAT;
SET @area = 3.14159 * @radio * @radio;
RETURN @area;
END;
Puedes llamar a una función escalar en una consulta SQL de esta manera:
SELECT dbo.calcular_area_circulo(5.0) AS area;
Esto devolverá el área del círculo con radio 5.0.
Funciones de tabla:
Una función de tabla devuelve un conjunto de resultados como una tabla virtual.
Puedes crear una función de tabla utilizando la siguiente sintaxis:
CREATE FUNCTION nombre_funcion (@parametro tipo_dato)
RETURNS TABLE
AS
RETURN (
-- Lógica de la función que genera los resultados de la tabla
SELECT columna1, columna2, ...
FROM tabla
WHERE condicion
);
Por ejemplo, aquí hay una función de tabla que devuelve los empleados con un salario mayor que cierto valor:
CREATE FUNCTION obtener_empleados_salario_superior (@salario_minimo INT)
RETURNS TABLE
AS
RETURN (
SELECT *
FROM Empleados
WHERE salario > @salario_minimo
);
Puedes utilizar una función de tabla en una consulta SQL de esta manera:
SELECT * FROM dbo.obtener_empleados_salario_superior(50000);
Esto devolverá todos los empleados con un salario superior a 50000.
Recuerda que las funciones personalizadas en SQL Server pueden contener lógica más compleja y realizar diversas operaciones según tus necesidades.