CREATE FUNCTION ステートメント

CREATE FUNCTION ステートメントは関数を定義します。

FunctionName を使用して関数名を、 ParameterList を使用して関数のパラメーターをそれぞれ提供します。 関数はタイプ DataType の値を戻し、 単一 ESQL ステートメント Statement を使用してインプリメントされます。 このステートメントは、複合ステートメント (たとえば BEGIN ... END;) であってもかまいません。

構文

注:
  1. NAMESPACE および NAME 文節が使用された場合は、 値は暗黙的に定数かつタイプ CHARACTER (または CHAR) です。

CONSTANT ステートメントの使用に関するさらに詳しい情報については、 DECLARE ステートメントを参照してください。

ESQL 関数は、ESQL プロシージャーとは異なり、入力パラメーターだけを持つことができます。 関数定義のパラメーター・リスト内で定義されている変数は、 関数の有効範囲内でのみ読み取られます。 関数複合ステートメント内の入力パラメーター変数の値を変更しようとすると、 変更できないことを示す例外条件が発生します。

パラメーターがタイプ REFERENCE である場合、 参照先の変数の値は変更されないので、 その参照変数に対して MOVE コマンドを発行することができます。 ただし、関数が完了し、処理が呼び出し側に戻されると、 REFERENCE 変数は、関数が呼び出される前に参照していた変数を参照します。

モジュール関数は現行ノードでのみ有効な、ローカルなものです。 同じ関数を複数のノードで使用する場合には、 それをスキーマ関数として定義してください。

オプションの schemaName パラメーターを省略する場合、 ブローカー SQL パーサーは PATH ステートメントに記述されているアルゴリズムを使用して名前付き関数を検索します。 PATH 文節を参照してください。

schemaName パラメーターを指定する場合、 指定された関数そのものは検索を実行せずに解決されます。

各スキーマは固有の関数およびプロシージャー・シンボル・スペースを提供します。
注:
  1. 関数呼び出しがあいまいである場合、つまり異なるスキーマに同じ名前の 2 つの関数があり、 かつ参照がオプションの schemaName で修飾されていない場合、 Eclipse ツール・セットは Tasks ビューアー・エラーを生成します。 あいまいなコードがデプロイされないようにこのエラーを訂正する必要があります。
  2. 関数多重定義はサポートされていません。
  3. 実質的には、組み込み関数は SQL という事前定義スキーマに置き換えられています。 同じ名前のユーザー定義モジュール・レベルの関数は、 これらの組み込み関数より優先されます。

関連概念
ESQL

関連タスク
ESQL の開発

関連資料
構文の設定
ESQL のステートメント
DECLARE ステートメント
PATH 文節