ストアド プロシージャを実行します。
構文:
>>--EXEC SQL--.--------------------.--.----------------.->
+-FOR :host_integer--+ +- :result_hvar -+
>---CALL stored_procedure_name-.------------.-END-EXEC-><
| +-- , --+ |
| V | |
+(parameter)-+
パラメーター:
host_integer |
処理されるホスト配列要素の最大数を指定するホスト変数。PIC S9(4) COMP-5 または PIC S9(9) COMP-5 として宣言する必要があります。 |
result_hvar |
手続き結果を受け取るホスト変数。 |
stored_procedure_name |
ストアド プロシージャの名前。 |
parameter |
次の形式のリテラル、DECLARE CURSOR 文1、またはホスト変数パラメーター。
[keyword=]:param_hvar [IN | INPUT |
INOUT | OUT | OUTPUT]
各要素を次に示します。
|
keyword 2 |
キーワード パラメーターの正式なパラメーター名。キーワード パラメーターは、読みやすさという点で有用であり、サーバーがデフォルトのパラメーター値とオプションのパラメーターをサポートしている場合にも役に立ちます。 |
param_hvar |
ホスト変数。 |
IN |
入力パラメーター。 |
INPUT |
入力パラメーター (デフォルト値)。 |
INOUT |
入力/出力パラメーター。 |
OUT |
出力パラメーター。 |
OUTPUT |
出力パラメーター。 |
1 DECLARE CURSOR を指定するのは、Oracle 8 以降で、結果セットを返すストアド プロシージャに対してのみです。DECLARE CURSOR を使用すると、対応するパラメーターのバインドが解除されます。
2 HCOSS はキーワード パラメーターをサポートしていません。
|
コメント:
CALL が DECLARE CURSOR 文の一部である場合は、FOR 句を使用しないでください。
最大限の移植性を確保するには、次の一般規則に従ってください。
- リテラルなパラメーターの使用を避ける
- ホスト変数のパラメーターを使用する
- 位置指定パラメーターとキーワード パラメーターを併用しない
- 位置指定パラメーターとキーワード パラメーターの併用がサーバーでサポートされている場合は、キーワード パラメーターを位置指定パラメーターの後に置く
例:
2 つの位置指定ホスト変数を入力パラメーターとして使用してストアド プロシージャを呼び出します。
EXEC SQL
CALL myProc(param1,param2)
END-EXEC
キーワード ホスト変数を入力パラメーターとして使用してストアド プロシージャを呼び出します。
EXEC SQL
CALL myProc (namedParam=:paramValue)
END-EXEC
結果のホスト変数と、入力パラメーターとしてのキーワード ホスト変数を使用して、ストアド プロシージャを呼び出します。
EXEC SQL
:myResult = CALL myFunction(namedParam=:paramValue)
END-EXEC
2 つの位置指定ホスト変数を、1 つは入力パラメーターとして、もう 1 つは出力パラメーターとして使用して、ストアド プロシージャを呼び出します。
EXEC SQL
CALL getDept(:empName IN, :deptName OUT)
END-EXEC
DECLARE CURSOR 文と、入力パラメーターとしての位置指定ホスト変数を使用して、ストアド プロシージャを呼び出します (Oracle のみ)。
EXEC SQL
DECLARE cities CURSOR FOR CALL locateStores(:userState)
END-EXEC