sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué es un UDF escalar en SQL Server?

En SQL Server, una UDF escalar, o función escalar definida por el usuario, es una función definida por el usuario que devuelve un único valor.

Esto contrasta con una función con valores de tabla, que devuelve un conjunto de resultados en forma de tabla.

Las funciones definidas por el usuario se pueden escribir como UDF T-SQL o UDF CLR (Common Language Runtime). CLR le permite crear UDF en código administrado utilizando cualquier lenguaje de programación .NET Framework. Luego, estas funciones son accesibles para T-SQL u otro código administrado.

Ejemplo 1:UDF escalar básico

Este es un ejemplo del código utilizado para crear una UDF escalar T-SQL básica.

CREATE FUNCTION dbo.ufn_discountPrice( 
    @price DECIMAL(12,2), 
    @discount DECIMAL(12,2) 
    ) 
RETURNS DECIMAL (12,2)
AS
BEGIN
  RETURN @price * (1 - @discount);
END;

Esta UDF escalar acepta dos parámetros; @price y @discount . Estos se pasan a la función como argumentos cada vez que se invoca la función. La función toma el valor de esos argumentos, realiza un cálculo usando esos valores y luego devuelve el valor resultante. En este caso, se devuelve el precio con descuento.

Ejemplo 2:invocar la UDF

Una vez que se ha creado el UDF, se puede invocar dentro del código T-SQL en cualquier momento que lo necesite.

Este es un ejemplo de cómo invocar la UDF:

SELECT dbo.ufn_discountPrice(100, .2) AS Result;

Resultado

+----------+
| Result   |
|----------|
| 80.00    |
+----------+

También puede usar UDF escalares en columnas calculadas. Esto puede ser particularmente útil si necesita la columna calculada para acceder a los datos en otra tabla.

Opciones de funciones

Cuando crea una UDF escalar, hay varias opciones que puede aplicar a la función.

Por ejemplo, puede especificar si debe o no estar vinculado al esquema. Puede especificar que debe estar encriptado. También puede especificar un EXECUTE AS cláusula para especificar el contexto de seguridad bajo el cual se ejecuta la función definida por el usuario.

Consulte la documentación de Microsoft para obtener una lista detallada de las opciones que puede proporcionar al crear o modificar una función definida por el usuario.

Tipo de datos de parámetro

Para las funciones de T-SQL, se permiten todos los tipos de datos, incluidos los tipos definidos por el usuario de CLR y los tipos de tabla definidos por el usuario, excepto timestamp. y el cursor no escalar y mesa tipos

Para las funciones de CLR, se permiten todos los tipos de datos, incluidos los tipos definidos por el usuario de CLR, excepto texto. , ntext , imagen , tipos de tabla definidos por el usuario, marca de tiempo tipos de datos y el cursor no escalar y mesa tipos

Tipo de datos devuelto

El tipo de datos de retorno para las UDF escalares de T-SQL puede ser cualquier tipo de datos excepto timestamp y el cursor no escalar y mesa tipos

Las funciones CLR pueden usar cualquier tipo de datos excepto texto , ntext , imagen , marca de tiempo , y el cursor no escalar y mesa tipos.

Tanto las funciones T-SQL como CLR pueden tener un tipo CLR definido por el usuario para su valor de retorno.