Поделиться через


Определяемые пользователем функции в базе данных 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;

См. также

Справочник

Другие ресурсы