Como Crear Funciones En Sql Server
Las funciones en SQL Server son bloques de código reutilizables. Reciben parámetros, ejecutan operaciones, y devuelven un valor. Facilitan la modularización del código y evitan la repetición.
¿Qué son las Funciones en SQL Server?
Una función es similar a una subrutina o procedimiento. Recibe datos de entrada. Realiza un cálculo o manipulación sobre esos datos y devuelve un resultado. Las funciones son objetos de base de datos.
Existen dos tipos principales: funciones escalares y funciones de tabla. Las funciones escalares devuelven un único valor. Las funciones de tabla devuelven un conjunto de filas, como una tabla.
Sintaxis para Crear una Función Escalar
La sintaxis básica para crear una función escalar es la siguiente:
CREATE FUNCTION nombre_funcion
(
@parametro1 tipo_dato1,
@parametro2 tipo_dato2,
...
)
RETURNS tipo_dato_retorno
AS
BEGIN
-- Lógica de la función
RETURN valor_retorno
END;
nombre_funcion es el nombre que le das a la función. @parametro1, @parametro2, etc., son los parámetros de entrada. tipo_dato_retorno es el tipo de dato del valor que la función devolverá. La palabra clave RETURNS indica el tipo de dato de la salida de la función.
Ejemplo de Función Escalar
Crearemos una función que calcula el área de un círculo:
CREATE FUNCTION CalcularAreaCirculo (@radio DECIMAL(10,2))
RETURNS DECIMAL(10,2)
AS
BEGIN
DECLARE @area DECIMAL(10,2);
SET @area = PI() * @radio * @radio;
RETURN @area;
END;
Aquí, CalcularAreaCirculo es el nombre de la función. Recibe un parámetro llamado @radio de tipo DECIMAL. Devuelve un valor DECIMAL que representa el área. Usamos la función incorporada PI() para obtener el valor de pi.
Para usar esta función, puedes ejecutar la siguiente consulta:
SELECT dbo.CalcularAreaCirculo(5);
Sintaxis para Crear una Función de Tabla
La sintaxis para crear una función de tabla es un poco diferente:
CREATE FUNCTION nombre_funcion
(
@parametro1 tipo_dato1,
@parametro2 tipo_dato2,
...
)
RETURNS TABLE
AS
RETURN
(
-- Consulta que devuelve la tabla
SELECT ...
);
En este caso, la función RETURNS TABLE. La cláusula RETURN seguida de una consulta SELECT define la tabla resultante.
Ejemplo de Función de Tabla
Crearemos una función que devuelve todos los clientes de una tabla Clientes que pertenecen a una ciudad específica:
CREATE FUNCTION ObtenerClientesPorCiudad (@ciudad NVARCHAR(50))
RETURNS TABLE
AS
RETURN
(
SELECT *
FROM Clientes
WHERE Ciudad = @ciudad
);
Aquí, ObtenerClientesPorCiudad es el nombre. Recibe un parámetro @ciudad. La consulta SELECT dentro de la función devuelve todas las filas de la tabla Clientes donde la columna Ciudad coincide con el parámetro @ciudad.
Para usar esta función, puedes ejecutar una consulta como la siguiente:
SELECT * FROM dbo.ObtenerClientesPorCiudad('Madrid');
Aplicaciones Reales
Las funciones son útiles en muchas situaciones. Pueden usarse para validar datos antes de la inserción. También se pueden utilizar para calcular valores derivados basados en otros datos.
Por ejemplo, una función podría calcular la edad de un cliente a partir de su fecha de nacimiento. Otra función podría formatear un número de teléfono para que tenga un formato consistente.
Las funciones de tabla son muy útiles para encapsular lógica de consulta compleja. Permiten crear vistas "parametrizadas" de los datos. Es decir, vistas que filtran y transforman los datos según los parámetros proporcionados.
