Определяемые пользователем функции в базе данных AdventureWorks
Образец базы данных OLTP AdventureWorks содержит несколько определяемых пользователем функций Transact-SQL. Примеры определяемых пользователем функций среды CLR приведены в разделе Образцы программирования в среде CLR.
Определяемые пользователем функции среды CLR
В следующей таблице содержится список доступных образцов определяемых пользователем функций CLR. Дополнительные сведения об определяемых пользователем функциях CLR см. в разделе Определяемые пользователем функции среды CLR.
Образец |
Описание |
---|---|
Операции над строками с учетом дополнений |
Иллюстрирует реализацию пяти строковых функций Transact-SQL, которые обеспечивают те же самые функции изменения строк, что и встроенные, однако с дополнительной возможностью распознавания символов для обработки как строк в Юникоде, так и строк с дополнительными символами. Это следующие пять функций: len_s(), left_s(), right_s(), sub_s() и replace_s(). Они эквивалентны встроенным строковым функциям LEN(), LEFT(), RIGHT(), SUBSTRING() и REPLACE(). |
Образец внутрипроцессного доступа к данным |
Содержит несколько простых функций, которые демонстрируют различные возможности внутрипроцессного поставщика доступа к данным SQLCLR. |
AdventureWorks Cycles CLR Layer |
Содержит функцию конвертации валют, которая возвращает экземпляр определяемого пользователем типа валюты. |
Программы определяемых пользователем типов |
Включает функции, обеспечивающие доступ к метаданным сборки из языка Transact-SQL, образцы потоковых функций, возвращающих табличные значения в виде таблицы, а также функции, возвращающие поля, методы и свойства определяемого пользователем типа. Демонстрирует такие технологии, как потоковые функции, возвращающие табличное значение, API-интерфейсы Reflection платформы Microsoft .NET Framework и вызов табличных функций языка Transact-SQL. |
Определяемые пользователем функции Transact-SQL
Следующая таблица содержит список определяемых пользователем функций Transact-SQL, которые содержатся в образце базы данных OLTP AdventureWorks. Дополнительные сведения об определяемых пользователем функциях Transact-SQL см. в разделе Основные сведения о пользовательских функциях.
Определяемая пользователем функция |
Описание |
Входные параметры |
Возвращаемые значения |
---|---|---|---|
ufnLeadingZeros |
Скалярная функция, которая добавляет ведущие нули к указанному целочисленному значению. Функция возвращает данные типа varchar(8). |
@valueint |
@ReturnValuevarchar(8) |
ufnGetContactInformation |
Упрощает пользовательский доступ к данным, инкапсулируя сложный запрос в функции, возвращающей табличное значение. |
@contactidint |
ContactIDint, FirstNamenvarchar(50), LastNamenvarchar(50), JobTitle nvarchar(50), ContactType nvarchar(50) |
ufnGetProductDealerPrice |
Скалярная функция, вычисляющая цену продавца на определенный продукт на основании цены по прейскуранту продукта на указанную дату. |
@productIDint, @orderdate datetime |
@DealerPricemoney |
Примеры
A. Использование dbo.ufnLeadingZeros
В следующем примере функция ufnLeadingZeros используется для создания номера счета заказчика по существующему столбцу CustomerID в таблице Customer.
USE AdventureWorks;
GO
SELECT CustomerID,('AW' + dbo.ufnLeadingZeros(CustomerID))
AS GenerateAccountNumber
FROM Sales.Customer
ORDER BY CustomerID;
GO
Б. Использование dbo.ufnGetContactInformation
База данных AdventureWorks содержит имена работников, заказчиков (представителей магазинов или частных клиентов) и представителей поставщиков в одной таблице — таблице Contact. Возвращающая табличное значение функция ufnGetContactInformation возвращает строку для указанного значения ContactID.
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
В. Использование dbo.ufnGetProductDealerPrice
В следующем примере функция ufnGetProductDealerPrice используется для возврата сниженной цены продавца на все продукты в таблице 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;
См. также