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


Пользовательские функции в AdventureWorks

Образец базы данных OLTP AdventureWorks содержит несколько пользовательских функций Transact-SQL. Примеры пользовательских функций среды CLR приведены в разделе Примеры программирования в среде CLR.

Пользовательские функции среды CLR

В следующей таблице содержится список доступных образцов пользовательских функций CLR. Дополнительные сведения о пользовательских функциях CLR см. в разделе CLR User-Defined Functions.

Образец Описание

Операции над строками с учетом дополнений

Иллюстрирует реализацию пяти строковых функций Transact-SQL, которые обеспечивают те же самые функции изменения строк, что и встроенные, однако с дополнительной возможностью распознавания символов для обработки как строк в Юникоде, так и строк с дополнительными символами. Это следующие пять функций: len_s(), left_s(), right_s(), sub_s() и replace_s(). Они эквивалентны встроенным строковым функциям LEN(), LEFT(), RIGHT(), SUBSTRING() и REPLACE().

Образец In-Process Data Access

Содержит несколько простых функций, которые демонстрируют различные возможности внутрипроцессного поставщика доступа к данным SQLCLR.

Образец String Utilities

Содержит поточную функцию, возвращающую табличное значение, которая написана на C# или Microsoft Visual Basic, и преобразует разделенную запятыми строку в таблицу с одним столбцом. Она также содержит статистическую функцию, преобразующую строковый столбец в разделенную запятыми строку.

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;

См. также

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

Объекты SQL Server в AdventureWorks
CREATE FUNCTION (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005