CALL 文を使用して、アプリケーションで一連の SQL 文をそれぞれ実行します。
『アプリケーションでのストアド・プロシージャの処理方法』で説明されているようにストアド・プロシージャを呼び出すために、アプリケーションで次の文が使用される場合があります。
EXEC SQL CALL GETEMPSVR (:V1, :V2) END-EXEC
CALL 文でホスト変数を使用する場合は、まずそのホスト変数宣言する必要があります。
上記の例は、入力パラメータに NULL 値を使用できないことが前提となっています。NULL 値を許可するには、次のように文をコーディングします。
EXEC SQL CALL GETEMPSVR (:V1 :IV1, :V2 :IV2) END-EXEC
ここで、:IV1 および :IV2 はパラメータのインジケータ変数です。
整数または文字ストリング定数や NULL 値をストアド・プロシージャに渡すには、次のように文をコーディングします。
EXEC SQL CALL GETEMPSVR (2, NULL) END-EXEC
ストアド・プロシージャ名を GETEMPSVR と仮定します。ホスト変数 PROCNAME は、値 GETEMPSVR が含まれた、長さが 254 文字以内の文字変数です。ストアド・プロシージャ名がわからなくても、パラメータ・リストの規則がわかっている場合には、この方法を使用してください。
個々のホスト変数としてではなく、1 つの構造体としてパラメータを渡すには、次のように文をコーディングします。
EXEC SQL CALL GETEMPSVR USING DESCRIPTOR :ADDVALS END-EXEC
ここで、ADDVALS は SQLDA の名前です。
SQLDA を使用するストアド・プロシージャにホスト変数名を使用するには、次のように文をコーディングします。
EXEC SQL CALL :PROCNAME USING DESCRIPTOR :ADDVALS END-EXEC
この形式では、同一の CALL 文を使用して、さまざまなパラメータ・リストを持つ複数の異なるストアド・プロシージャを呼び出すことができるため、特に柔軟性があります。
クライアント・プログラムは、SQL CALL 文を作成する前に、ホスト変数 PROCNAME にストアド・プロシージャ名を割り当てて、SQLDA ADDVALS にパラメータ情報をロードする必要があります。
上記の各 CALL 文の例は、SQLDA を使用しています。SQLDA を明示的に指定しない場合は、プリコンパイラは、パラメータ・リスト内の変数に基づいて SQLDA を生成します。
CALL 文は、アプリケーション・プログラムからのみ実行できます。CALL 文を動的に使用することはできません。