SQL ストアード・プロシージャー呼び出しがあった場合、pureQuery は、デフォルトで StoredProcedureResult のインスタンスとして結果を戻します。 また、デフォルトの場合、pureQuery は、アノテーション付きメソッドまたはインライン・メソッドに渡されたマップと Bean を、OUT パラメーターと INOUT パラメーターが示されるように更新します。
T handleCall (CallableStatement cstmt, Object... parameters) throws SQLException
pureQuery は handleCall() メソッドを呼び出し、アノテーション付きメソッドまたはインライン・メソッドから戻されるオブジェクトを作成します。pureQuery は、このメソッドを呼び出すときに、java.sql.CallableStatement インターフェースを実装するオブジェクトを渡します。このインターフェースは、SQL CALL ステートメントを実行するのに使用されたものです。また pureQuery は、CALL ステートメントでパラメーター値を渡すときに使用したパラメーターも渡します。
アノテーション付きメソッドから CallHandlerWithParameter オブジェクトを呼び出すには、次の 2 つの方法があります。
@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}")
@Handler(callHandlerWithParameters = customHandlers.GetAddEmResult_CallHandlerWithParameters.class)
public MyResultsBean spResults(AddEm_Parameters parms);
ハンドラーをパラメーターとして指定する場合、そのパラメーターはメソッド・シグニチャーの最後のパラメーターでなければなりません。CallHandlerWithParameters と一緒に ParameterHandler をパラメーターとして指定する場合、これらのハンドラーは、メソッド・シグニチャー内の最後の 2 つのパラメーターでなければなりません。
例えば、次のようにインターフェースの中で、特定の型の CallHandlerWithParameters を呼び出すアノテーション付きメソッドを定義できます。@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}")
public MyResultsBean spResults(AddEm_Parameters parms, GetAddEmResult_CallHandlerWithParameters c);
また、次のようにメソッドを呼び出すこともできます。
MyResultsBean results = face.spResults(parmsObject, new GetAddEmResult_CallHandlerWithParameters());
Data インターフェースの以下のバージョンの多重定義された call() メソッドに対して、CallHandlerWithParameters<CAL> オブジェクトを渡します。
<CAL> T call(String sql, CallHandlerWithParameters<CAL> callHandlerWithParameters, Object... parameters)
以下は一例です。
MyResultsBean spResults = db.call("{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}",
new custom.GetAddEmResult_CallHandlerWithParameters(), int outVal, int inVal1, int inVal2, int inVal3)