SQL 概説

ユーザー定義関数

関数の使用で触れたように、 DB2 ユニバーサル・データベースには組み込み関数とユーザー定義関数 (UDF) とが用意されています。 しかし、それだけの関数ですべての要求を満たすことは到底できません。 しばしば、特定の作業を行うためにカスタマイズした関数を作成する必要が生じます。 ユーザー定義関数を使うなら、カスタマイズ済み関数を作成できます。

ユーザー定義関数には、 ソース (またはテンプレート)、 外部スカラー外部表OLE DB 外部表 という 4 つのタイプがあります。

ここでは、ソース関数と外部スカラー関数を取り上げます。 外部表関数と OLE DB 外部表関数の詳細については、 SQL 解説書 を参照してください。

ソース・ユーザー定義関数を使うと、ユーザー定義タイプにおいて、 データベースで既知である別の組み込み関数またはユーザー定義関数を選択的に参照することが可能になります。 スカラー関数と列関数の両方を使うことができます。

次の例では、DECIMAL データ・タイプを入力とする組み込み列関数 MAX に基づいて、 MAX というユーザー定義関数を作成しています。 MAX UDF は、PAY タイプを入力とし、PAY タイプを出力として戻します。

     CREATE FUNCTION MAX(PAY) RETURNS PAY
        SOURCE MAX(DECIMAL)

外部ユーザー定義関数は、 プログラミング言語によってユーザーが作成するものです。 それには外部スカラー関数外部表関数 があります。 いずれも SQL 解説書 を参照してください。

別の例として、ストリング中の単語数を数えるための関数をすでに作成してあるなら、 CREATE FUNCTION ステートメントを使うことによって、WORDCOUNT という名前でデータベースにそれを登録できます。 そのようにするなら、 その関数を SQL ステートメントで使えるようになります。

次のステートメントは、 従業員番号 (EMPNO) と、その履歴書の ASCII 形式での単語数を戻します。 WORDCOUNT はユーザーによってデータベースに登録されている外部スカラー関数であり、 ここではそれをステートメントの中に使用しています。

 
     SELECT EMPNO, WORDCOUNT(RESUME)
        FROM EMP_RESUME
        WHERE RESUME_FORMAT = 'ascii'

ユーザー定義関数の作成については、 アプリケーション開発の手引き を参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]