Le comportement de pureQuery par défaut avec les appels de la procédure SQL enregistrée est de renvoyer les résultats dans une instance de StoredProcedureResult. De plus, par défaut pureQuery met à jour les mappes et les beans qui ont été transmis à une méthode annotée ou intégrée pour représenter les paramètres OUT et INOUT.
T handleCall (CallableStatement cstmt, Object... parameters) throws SQLException
pureQuery appelle la méthode handleCall() pour créer l'objet renvoyé d'une méthode annotée ou intégrée. Lorsque pureQuery appelle cette méthode, elle transmet un objet implémentant l'interface java.sql.CallableStatement utilisée pour exécuter l'instruction SQL CALL. pureQuery transmet également les paramètres dont vous avez besoin pour transmettre les valeurs des paramètres dans l'instruction CALL.
Il existe deux méthodes que vous pouvez utiliser pour appeler les objets CallHandlerWithParameter à partir des méthodes annotées.
@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}") @Handler(callHandlerWithParameters = customHandlers.GetAddEmResult_CallHandlerWithParameters.class) public MyResultsBean spResults(AddEm_Parameters parms);
Lorsque vous définissez un gestionnaire comme paramètre, le paramètre doit être le dernier de la signature de la méthode. Si vous définissez un CallHandlerWithParameters et un ParameterHandler comme paramètres, les gestionnaires doivent être les deux derniers paramètres de la signature de la méthode.
Par exemple, dans une interface, vous pouvez définir une méthode annotée qui appelle un type spécifique de CallHandlerWithParameters :@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}") public MyResultsBean spResults(AddEm_Parameters parms, GetAddEmResult_CallHandlerWithParameters c);
Vous pouvez appeler la méthode comme suit :
MyResultsBean results = face.spResults(parmsObject, new GetAddEmResult_CallHandlerWithParameters());
Transmettez les objets CallHandlerWithParameters<CAL> à cette version de la méthode call() surchargée dans l'interface Data :
<CAL> T call(String sql, CallHandlerWithParameters<CAL> callHandlerWithParameters, Object... parameters)
Exemple :
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)