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
ストアド プロシージャの名前にホスト変数を使用するには、次のように文をコーディングします。
EXEC SQL CALL :PROCNAME (:V1, :V2) END-EXEC
ストアド プロシージャ名を GETEMPSVR と仮定します。ホスト変数 PROCNAME は、値 GETEMPSVR が含まれた、長さが 254 文字以内の文字変数です。ストアド プロシージャ名が事前にわからない場合でも、パラメーター リストの規則がわかっている場合には、この方法を使用できます。
個々のホスト変数としてではなく、単一の構造体でパラメーターを渡すには、次のように文をコーディングします。
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 文を動的に使用することはできません。