SQL 文 CALL の実行

CALL 文を使用して、アプリケーションで一連の SQL 文をそれぞれ実行します。

例 1

「アプリケーションでのストアド プロシージャの処理方法」で説明されているようにストアド プロシージャを呼び出すために、アプリケーションで次の文が使用される場合があります。

EXEC SQL
 CALL GETEMPSVR (:V1, :V2)
END-EXEC

CALL 文でホスト変数を使用する場合は、まずそのホスト変数を宣言する必要があります。

例 2

上記の例は、入力パラメーターに NULL 値を使用できないことが前提となっています。NULL 値を許可するには、次のように文をコーディングします。

EXEC SQL
 CALL GETEMPSVR (:V1 :IV1, :V2 :IV2)
END-EXEC

ここで、:IV1 および :IV2 はパラメーターのインジケーター変数です。

例 3

整数や文字列定数、または NULL 値をストアド プロシージャに渡すには、次のように文をコーディングします。

EXEC SQL
 CALL GETEMPSVR (2, NULL)
END-EXEC

例 4

ストアド プロシージャの名前にホスト変数を使用するには、次のように文をコーディングします。

EXEC SQL
 CALL :PROCNAME (:V1, :V2)
END-EXEC

例 5

ストアド プロシージャ名を GETEMPSVR と仮定します。ホスト変数 PROCNAME は、値 GETEMPSVR が含まれた、長さが 254 文字以内の文字変数です。ストアド プロシージャ名が事前にわからない場合でも、パラメーター リストの規則がわかっている場合には、この方法を使用できます。

個々のホスト変数としてではなく、単一の構造体でパラメーターを渡すには、次のように文をコーディングします。

EXEC SQL
 CALL GETEMPSVR USING DESCRIPTOR :ADDVALS
END-EXEC

ADDVALS は SQLDA の名前です。

例 6

SQLDA を使用するストアド プロシージャにホスト変数名を使用するには、次のように文をコーディングします。

EXEC SQL
 CALL :PROCNAME USING DESCRIPTOR :ADDVALS
END-EXEC

この形式では、さまざまなパラメーター リストを持つ複数の異なるストアド プロシージャを同一の CALL 文を使用して呼び出せるため、特に柔軟性があります。

クライアント プログラムは、SQL CALL 文を作成する前に、ホスト変数 PROCNAME にストアド プロシージャ名を割り当てて、SQLDA ADDVALS にパラメーター情報をロードする必要があります。

上記の各 CALL 文の例は、SQLDA を使用しています。SQLDA を明示的に指定しない場合は、プリコンパイラは、パラメーター リスト内の変数に基づいて SQLDA を生成します。

CALL 文は、アプリケーション プログラムからのみ実行できます。CALL 文を動的に使用することはできません。