ユーザー定義スカラー関数の作成および使用の例
表から入力を取得し、出力を表に書き込む、ユーザー定義スカラー関数を作成できます。
お客様の組織には、各従業員が受け取るボーナスを計算する ユーザー定義スカラー関数が必要であるとします。 給与、歩合、およびボーナスを含め、すべての従業員データは従業員表 EMP に入っています。 ボーナス計算関数の入力フィールドは、SALARY 列と COMM 列の値です。 関数の出力は、BONUS 列に入れます。 この関数はDb2表から入力を取得し、出力をDb2表に配置するため、データを操作する便利な方法はユーザー定義関数を使用することです。
このユーザー定義関数の定義者と呼び出し側は、
この新しいユーザー定義関数に次の特性が必要であることを決めます。
- ユーザー定義関数名は CALC_BONUS である。
- 2 つの入力フィールドのタイプは DECIMAL(9,2) である。
- 出力フィールドのタイプは DECIMAL(9,2) である。
- ユーザー定義関数のプログラムは COBOL で作成し、 ロード・モジュール名を CBONUS とする。
ソース・ユーザー定義関数を作成する基となる組み込み関数または
ユーザー定義関数は存在しないため、
関数の実装者は外部ユーザー定義関数をコーディングする必要があります。 実装者は次のステップを行います。
- COBOL プログラムである、ユーザー定義関数を作成する。
- プログラムをプリコンパイル、コンパイル、およびリンクする。
- ユーザー定義関数に SQL ステートメントが含まれる場合は、パッケージをバインドする。
- そのプログラムの十分なテストを行う。
- ユーザー定義関数パッケージの実行権限を定義者に与える。
ユーザー定義関数定義者は、このCREATE FUNCTIONステートメントを実行して、CALC_BONUSを以下 Db2に登録します。
CREATE FUNCTION CALC_BONUS(DECIMAL(9,2),DECIMAL(9,2))
RETURNS DECIMAL(9,2)
EXTERNAL NAME 'CBONUS'
PARAMETER STYLE SQL
LANGUAGE COBOL;
さらに、定義者は CALC_BONUS の実行権限をすべての呼び出し側に与えます。
ユーザー定義関数の呼び出し側は、CALC_BONUS を呼び出す
アプリケーション・プログラムを作成し、準備します。 呼び出し側はこのようなステートメントを作成し、それが、
ユーザー定義関数を使用して従業員表の BONUS フィールドを更新します。
UPDATE EMP
SET BONUS = CALC_BONUS(SALARY,COMM);
呼び出し側は、このステートメントを静的または動的に実行することができます。