ESQL CALL ステートメントは、さまざまな方法で作成およびインプリメントされたルーチンを呼び出します。
(CALL を使用して、組み込み (ブローカー提供) 関数やユーザー定義 SQL 関数を起動することもできますが、通常はそれらの名前を式の中で直接使用します。)
CALL ステートメントの構文およびパラメーターの詳細については、CALL ステートメントを参照してください。 CALL の使用例については、CREATE PROCEDURE ステートメントの例を参照してください。
ルーチンの定義に LANGUAGE 文節として ESQL が指定されているか、またはルーチンが組み込み関数の場合は、ルーチンは ESQL メソッドとして起動されます。
定義と CALL の間で、データ・タイプと個々のパラメーターの方向が正確な 1 対 1 マッチングになっていることが必要です。
ESQL ルーチンを使用して、List および Row 以外の ESQL データ・タイプを戻せます。
ルーチンの定義に LANGUAGE 文節として JAVA が指定されている場合は、ルーチンは Java メソッドとして起動されます。
定義と CALL の間で、データ・タイプと個々のパラメーターの方向が正確な 1 対 1 マッチングになっていることが必要です。
Java メソッドの戻りタイプが void の場合は、戻る値がないので、INTO 文節を使用できません。
Java ルーチンは、ESQL から Java へのデータ・タイプ・マッピングの表のデータ・タイプを戻せます。List と Row が除外されていることに注意してください。
ルーチンの定義に LANGUAGE 文節として DATABASE が指定されている場合は、ルーチンはデータベース・ストアード・プロシージャーとして起動されます。
データベース・ストアード・プロシージャーが呼び出されると、ブローカーはプロシージャーのローカル名と一致する定義 (CREATE PROCEDURE ステートメントで作成) を検索します。 ブローカーは以下の手順を使用して、データベース内およびそれが属するデータベース・スキーマでプロシージャーを認識するための名前を解決します。
CALL ステートメントの IN 文節の主な使用法は、それによりデータ・ソース、データベース・スキーマ、またはその両方を実行時に動的に選択できるようにすることです。 EXTERNAL SCHEMA 文節を使用しても、ストアード・プロシージャーを含むデータベース・スキーマを動的に選択できますが、IN 文節ほど柔軟でないので、以前のバージョンとの互換性だけのために保存されています。 新しいアプリケーションでこの文節を使用することは推奨されていません。)
呼び出されるルーチンの定義に DYNAMIC RESULT SETS が指定されている場合、CALL ステートメントの ParameterList 中の式の数はそのルーチンに対する実パラメーターの数と DYNAMIC RESULT SETS の数を加算した数値でなければなりません。例えば、ルーチンに 3 つのパラメーターと 2 つの DYNAMIC RESULT SETS がある場合、CALL ステートメントは呼び出されるルーチンにパラメーターを 5 つ渡さなければなりません。2 つの DYNAMIC RESULT SETS の場合、渡されるパラメーターは、リスト・パラメーターでなければなりません。つまり、配列大括弧 [ ] で修飾されたフィールド参照 (例えば、Environment.ResultSet1[]) でなければなりません。
データベース・ストアード・プロシージャーを使用して、Interval、List および Row 以外の ESQL データ・タイプを戻せます。