Funciones definidas por el usuario en AdventureWorks

La base de datos OLTP de ejemplo AdventureWorks incluye varias funciones Transact-SQL definidas por el usuario. Los ejemplos de las funciones CLR (Common Language Runtime) definidas por el usuario se encuentran en Ejemplos de programación de CLR.

Funciones CLR definidas por el usuario

En la tabla siguiente se enumeran los ejemplos de las funciones CLR definidas por el usuario que están disponibles. Para obtener más información acerca de las funciones CLR definidas por el usuario, vea Funciones CLR definidas por el usuario.

Ejemplo

Descripción

Manipulación de cadenas que detectan caracteres complementarios

Muestra la implementación de cinco funciones de cadena Transact-SQL que proporcionan las mismas funciones de modificación de cadenas que las funciones integradas, pero con una capacidad adicional que detecta caracteres para controlar cadenas de caracteres Unicode y caracteres complementarios. Las cinco funciones son: len_s(), left_s(), right_s(), sub_s() y replace_s(). Estas funciones son equivalentes a las funciones de cadena integradas LEN(), LEFT(), RIGHT(), SUBSTRING() y REPLACE().

Ejemplo de acceso a datos en curso

Contiene varias funciones simples que muestran distintas características del proveedor de acceso a datos en curso SQLCLR.

AdventureWorks Cycles CLR Layer

Contiene una función de conversión de moneda que devuelve una instancia de un tipo de moneda definido por el usuario.

Utilidades UDT

Incluye funciones para exponer metadatos de ensamblado a Transact-SQL, funciones de valor de tabla de transmisión por secuencias de ejemplo para devolver los tipos de un ensamblado en una tabla, así como funciones para devolver los campos, los métodos y las propiedades en un tipo definido por el usuario. Demuestra tecnologías como las funciones de transmisión por secuencias con valores de tabla, API de reflexión de Microsoft .NET Framework y la invocación de funciones con valores de tabla de Transact-SQL.

Funciones Transact-SQL definidas por el usuario

En la tabla siguiente se enumeran las funciones Transact-SQL definidas por el usuario que se incluyen en la base de datos OLTP de ejemplo AdventureWorks. Para obtener más información acerca de las funciones de Transact-SQL definidas por el usuario, vea Descripción de funciones definidas por el usuario.

Función definida por el usuario

Descripción

Parámetros de entrada

Valores devueltos

ufnLeadingZeros

Función escalar que agrega ceros iniciales a un valor entero determinado. La función devuelve un tipo de datos varchar(8).

@valueint

@ReturnValuevarchar(8)

ufnGetContactInformation

Simplifica el acceso del usuario a los datos, ya que encapsula una consulta compleja en una función con valores de tabla.

@contactidint

ContactIDint, FirstNamenvarchar(50), LastNamenvarchar(50), JobTitlenvarchar(50), ContactTypenvarchar(50)

ufnGetProductDealerPrice

Función escalar que calcula el precio de mayorista para un producto específico en función del precio listado del producto en una fecha determinada.

@productIDint, @orderdate

datetime

@DealerPricemoney

Ejemplos

A. Usar dbo.ufnLeadingZeros

En el ejemplo siguiente se utiliza la función ufnLeadingZeros para generar un número de cuenta de cliente a partir de una columna CustomerID existente en la tabla Customer.

USE AdventureWorks;
GO
SELECT CustomerID,('AW' + dbo.ufnLeadingZeros(CustomerID)) 
    AS GenerateAccountNumber
FROM Sales.Customer
ORDER BY CustomerID;
GO

B. Usar dbo.ufnGetContactInformation

La base de datos AdventureWorks contiene los nombres de los empleados, los clientes (representantes de ventas o clientes individuales) y presentantes del proveedor en una tabla, la tabla Contact. La función con valores de tabla ufnGetContactInformation devuelve una fila para un ContactID determinado.

USE AdventureWorks;
GO
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(2200);
GO
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(5);
GO

C. Usar dbo.ufnGetProductDealerPrice

El ejemplo siguiente utiliza la función ufnGetProductDealerPrice para devolver el precio de mayorista con descuento para todos los productos de la tabla ProductListPriceHistory.

USE AdventureWorks;
GO
SELECT ProductID, ListPrice, dbo.ufnGetProductDealerPrice(ProductID, StartDate) AS DealerPrice,
    StartDate, EndDate
FROM Production.ProductListPriceHistory
WHERE ListPrice > .0000
ORDER BY ProductID, StartDate;