Das Standardverhalten von pureQuery bei Aufrufen gespeicherter SQL-Prozeduren ist es, die Ergebnisse in einer Instanz von StoredProcedureResult zurückzugeben. Darüber hinaus aktualisiert pureQuery standardmäßig Zuordnungen und Beans, die an eine mit Annotationen versehene oder integrierte Methode übergeben wurden, um die Parameter OUT und INOUT darzustellen.
T handleCall (CallableStatement cstmt, Object... parameters) throws SQLException
pureQuery ruft die Methode handleCall() auf, um das Objekt zu erstellen, das von der mit Annotationen versehenen oder integrierten Methode zurückgegeben wird. Wenn pureQuery diese Methode aufruft, wird ein Objekt übergeben, das die Schnittstelle java.sql.CallableStatement implementiert, die zur Ausführung der SQL-Anweisung CALL verwendet wird. pureQuery übergibt zudem Parameter, die Sie zum Übergeben der Werte der Parameter in der Anweisung CALL verwendet haben.
Es gibt zwei Methoden, um die CallHandlerWithParameter-Objekte von mit Annotationen versehenen Methoden zu verwenden.
@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}") @Handler(callHandlerWithParameters = customHandlers.GetAddEmResult_CallHandlerWithParameters.class) public MyResultsBean spResults(AddEm_Parameters parms);
Wenn Sie einen Handler als Parameter angeben, muss der Parameter der letzte Parameter in der Methodenkennung sein. Wenn Sie CallHandlerWithParameters und ParameterHandler als Parameter angeben, müssen die Handler die letzten beiden Parameter in der Methodenkennung sein.
Sie können beispielsweise in einer Schnittstelle eine mit Annotationen versehene Methode definieren, die eine bestimmten Typ von CallHandlerWithParameters aufruft:@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}") public MyResultsBean spResults(AddEm_Parameters parms, GetAddEmResult_CallHandlerWithParameters c);
Sie könnten die Methode wie folgt aufrufen:
MyResultsBean results = face.spResults(parmsObject, new GetAddEmResult_CallHandlerWithParameters());
Sie übergeben CallHandlerWithParameters<CAL>-Objekte an diese Version der überladenen Methode call() in der Schnittstelle Data:
<CAL> T call(String sql, CallHandlerWithParameters<CAL> callHandlerWithParameters, Object... parameters)
Beispiel:
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)