AdventureWorks のユーザー定義関数
AdventureWorks サンプル OLTP データベースには、いくつかの Transact-SQL ユーザー定義関数が含まれています。共通言語ランタイム (CLR) ユーザー定義関数の例については、「CLR プログラミング サンプル」を参照してください。
CLR ユーザー定義関数
次の表では、利用可能な CLR ユーザー定義関数のサンプルについて説明します。CLR ユーザー定義関数の詳細については、「CLR ユーザー定義関数」を参照してください。
サンプル | 説明 |
---|---|
5 つの Transact-SQL 文字列関数の実装が含まれています。これらの文字列関数が提供する文字列変更機能は組み込み関数と同じですが、補助文字を認識する機能が追加されているため、Unicode と補助文字の両方の文字列を処理できます。実装されている関数は、len_s()、left_s()、right_s()、sub_s()、および replace_s() の 5 つです。これらは、組み込み文字列関数の LEN()、LEFT()、RIGHT()、SUBSTRING()、および REPLACE() に対応します。 |
|
SQLCLR インプロセス データ アクセス プロバイダのさまざまな機能を実行できる単純な関数が複数含まれています。 |
|
コンマ区切りの文字列を分割して 1 列のテーブルを作成する、ストリーミング テーブル値関数が含まれています。この関数は、C# および Microsoft Visual Basic で記述されています。文字列型の列をコンマ区切りの文字列に変換する集計関数も含まれています。 |
|
Currency ユーザー定義型のインスタンスを返す通貨換算関数が含まれています。 |
|
アセンブリのメタデータを Transact-SQL に公開する関数が含まれています。これらの関数は、アセンブリ内の型をテーブルとして返すサンプル ストリーミング テーブル値関数や、ユーザー定義型のフィールド、メソッド、およびプロパティを返す関数です。ストリーミング テーブル値関数、Microsoft .NET Framework リフレクション API、Transact-SQL からのテーブル値関数の呼び出しなどの技術が採用された、関数です。 |
Transact-SQL ユーザー定義関数
次の表では、AdventureWorks サンプル OLTP データベースに含まれている Transact-SQL ユーザー定義関数について説明します。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
関数を使用して、Customer
テーブルの既存の CustomerID
列から顧客アカウント番号を生成します。
USE AdventureWorks;
GO
SELECT CustomerID,('AW' + dbo.ufnLeadingZeros(CustomerID))
AS GenerateAccountNumber
FROM Sales.Customer
ORDER BY CustomerID;
GO
B. dbo.ufnGetContactInformation の使用
AdventureWorks データベースでは、従業員、顧客 (販売店の代表者または個人消費者)、および仕入先の代表者の名前が 1 つのテーブル (Contact テーブル) に含まれています。テーブル値関数 ufnGetContactInformation
は、指定された ContactID
に対応する 1 行のデータを返します。
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. 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;
参照
その他の技術情報
AdventureWorks の SQL Server オブジェクト
CREATE FUNCTION (Transact-SQL)