ユーザー定義関数は、文字通りユーザー(プログラマーやデータベース管理者)が定義した独自の関数です。考え方としては、ExcelやAccessのVBAで作るユーザー定義関数(プロシージャ)と似ていますが、データベース特有の機能を持っています。
- 2種類のユーザー定義関数 -
ユーザー定義関数はストアドプロシージャとは別物ですが、使用方法は似ています。データベースを変更するような処理はストアドプロシージャに任せ、ユーザー定義関数はローカルな(データベース固有の)処理の定型化を担当することになります。
返す値と処理内容によって、ユーザー定義関数はスカラ値関数とテーブル値関数に分かれます。
・スカラ値関数
数量(scalar:スカラー)を返す一般的な関数です。
・テーブル値関数
SELECT命令などでテーブルを処理した結果を返す関数です。
- さらに2種類のテーブル値関数 -
データベースでは処理結果としてテーブルを返せるところが、Excelのユーザー定義関数と異なるところです。さらにテーブル値関数は、インラインテーブル値関数と複数ステートメントのテーブル値関数とに分かれます。
・インラインテーブル値関数
1行で処理できるSELECT文が戻り値となります。
・複数ステートメントのテーブル値関数
テーブルに対する処理を複数記述し、最後にテーブルを返します。
「ステートメント」は1つの完結した構文を意味し、SQL Serverのオンラインヘルプなどでよく使われています。
- ユーザー定義関数の基本書式 -
ユーザー定義関数は、このように都合3種類に分かれていますが、内部処理や値の返し方が異なるだけであって、基本的な書式は変わりません。
ユーザー定義関数を作成するには、Create Function命令を使います。
Create Function <関数名>
As
:
では、3種類のユーザー定義関数について、例を示しながら作り方と使い方を紹介しておきましょう。
![](../../images/pixel.gif) |
|
|