IBM® empfiehlt Ihnen die Verwendung der Schnittstelle
CallHandlerWithParameters<T> anstelle der Schnittstelle CallHandler<T>.
Sie übergeben die CallHandler<T>-Objekte an diese Version der überladenen Methode call() in der Schnittstelle Data:
<T> T call(java.lang.String sql,
CallHandler<T> callHandler,
java.lang.Object... parameters)
CallHandler<T>-Objekte enthalten eine Methode: handleCall(CallableStatement cstmt).
Wenn pureQuery diese Methode aufruft, übergibt pureQuery ein Objekt, das die Schnittstelle java.sql.CallableStatement implementiert, die zur Ausführung der SQL-Anweisung CALL verwendet wurde.
Verwenden Sie die Methode
handleCall(CallableStatement cstmt), um die folgenden Tasks auszuführen:
- Die aufrufbare Anweisung cstmt verwenden, die pureQuery für den Zugriff auf Abfrageergebnisse übergibt, die von der gespeicherten Prozedur (mit den Methoden getMoreResults() und
getResultSet() von cstmt) zurückgegeben werden. Informationen zur Schnittstelle java.sql.CallableStatement finden Sie im Javadoc für Ihr Java SDK.
- Mit cstmt auf Werte zugreifen, die von den Parametern OUT und INOUT einer gespeicherten Prozedur zurückgegeben wurden und diese in das resultierende <T>-Objekt aufnehmen.
- Das Objekt des Typs <T>, das die integrierte Methode zurückgibt, erstellen und zurückgeben. Das Objekt kann beispielsweise den Inhalt von zurückgegebenen Abfrageergebnissen enthalten. Es gibt jedoch keine Einschränkungen zu den Informationen, die dieses Objekt enthalten kann.
Sie können diese Schnittstelle nur mit integrierten Methoden verwenden.
Beispiel
In diesem Beispiel erstellt der Code ein neues CallHandler<T>-Objekt namens GetAddEmResult_CallHandler.
MyBean spResults = db.call("{?1 = Call ADDEM (?2, ?3, ?4)}",
^ new custom.GetAddEmResult_CallHandler(), int outVal, int inVal1, int inVal2, int inVal3)