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.

Deja una respuesta