データベースに保管されているプロシージャーを呼び出すには、ESQL CALL ステートメントを使用します。
ストアード・プロシージャーは、DATABASE の LANGUAGE 文節およびデータベース内のプロシージャーの名前を識別する EXTERNAL NAME 文節、およびオプションで、
それが属するデータベース・スキーマを持つ CREATE PROCEDURE ステートメントによって定義される必要があります。
CALL ステートメントを使用してストアード・プロシージャーを呼び出すと、ブローカーは、次のように ESQL 定義とデータベース定義を確実に一致させます。
- プロシージャーの外部名が、データベースのプロシージャーと一致していなければならない。
- パラメーターの数が同じでなければならない。
- 各パラメーターのタイプが同じでなければならない。
- 各パラメーターの方向 (IN、OUT、INOUT) が同じでなければならない。
以下の制約事項がストアード・プロシージャーの使用に対して適用されます。
- 多重定義のプロシージャーはサポートされません。 (多重定義プロシージャーとは、同じデータベース・スキーマ内の別のプロシージャーと同じ名前を持つプロシージャーで、パラメーターの数またはパラメーターのタイプが異なるものです。) プロシージャーが多重定義されていることをブローカーが検出すると、例外が発生します。
- Oracle のストアード・プロシージャー宣言では、CHAR および VARCHAR2 パラメーターの長さ、および NUMBER パラメーターの精度と位取り (または、その両方) を制約することはできません。 CHAR、VARCHAR、および NUMBER パラメーターを宣言したときは、%TYPE を使用して仮パラメーターで制約を規定します。
- プロシージャーの名前を変更せずに、パラメーターのタイプや数を変更することは避けてください。
そのような変更が避けられない場合、ESQL によって呼び出される、パラメーターが変更されたプロシージャーを含む実行グループがあれば、再始動しなければなりません。