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