Funciones escalares en SQL Server
Además de ejecutar consultas en el momento, es posible crear funciones escalares en SQL Server listas para ser ejecutadas desde otras consultas.
SQL Server maneja dos tipos de funciones que el usuario puede crear.
- Funciones escalares (UDF).
- Funciones con valor de tabla (TVF)
Las funciones escalares toman un valor de entrada para devolver un resultado único a la consulta que la invoco.
Ubicación de funciones escalares en SQL
Así como los procedimientos almacenados, las funciones también esta ubicadas en la carpeta de programación de la base de datos.
Dentro de esta carpeta encontramos la capeta de nombre Funciones Valor-Escalar, esta es la ubicación de estas funciones.
Crear una función
En la carpeta que almacenara las funciones escalares damos clic derecho, seleccionamos nueva función de valor escalar.
Se crea un query con la estructura de la función.
Los puntos mas destacados que debemos tomar en cuenta son.
- Variable que recibe el valor del usuario.
- Tipo de dato de retorno al usuario.
- Operaciones.
- Resultado de retorno.
Conociendo estos puntos podemos crear una función real que nos devuelva el resultado de una operación.
Podría interesarte Variable de tipo tabla en SQL Server
Ejemplo
Crearemos un ejemplo sencillo para la mostrar como funciona este tipo de función.
Calcular la raíz cuadrada de un número.
Tomando de base la estructura vista anteriormente vamos a colocar los datos necesarios de la función y simplificar un poco el código.
Analizando el problema y viendo los cuatro puntos principales marcados anteriormente son.
- Valor de entrada es un numero entero o decimal.
- Tipo de dato de retorno será un decimal.
- Calcular la raíz cuadrada.
- Retornar el resultado de la raíz cuadrada.
De acuerdo a estos puntos, la función quedara de la siguiente manera.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Gerardo Alvarez
-- Create date: 01/07/2019
-- Description: Calcular raiz cuadrada de un numero
-- =============================================
CREATE FUNCTION CALCULAR_RAIZ_CUADRADA
(
@VALOR FLOAT
)
RETURNS FLOAT
AS
BEGIN
DECLARE @RESULTADO FLOAT;
SET @RESULTADO = SQRT(@VALOR);
RETURN @RESULTADO;
END
GO
Una vez que tenemos el procedimiento debemos guardarlo, para ello hay que ejecutarlo.
Listo, ya tenemos una función en la carpeta de funciones escalares, comprueba revisando la carpeta.
Podría interesarte Cursores en SQL Server
Utilizar función escalar
Ya que tenemos la función que calcula la raíz cuadra de un número, probemos que funciona.
Utilizando una consulta select llamaremos a la función escalar, le enviaremos un numero para el cálculo.
SELECT dbo.CALCULAR_RAIZ_CUADRADA(99);
Colocando el nombre del esquema (dbo) e instanciando la función (CALCULAR_RAIZ_CUADRADA), enviamos el número entre paréntesis.
De esta manera hacemos uso de las funciones escalares, el resultado es un valor único.