Interface CallHandlerWithParameters<CAL>

Vous pouvez personnaliser la façon dont pureQuery gère les résultats obtenus suite à une procédure SQL enregistrée CALL en utilisant une implémentation de l'interface com.ibm.pdq.runtime.handlers.CallHandlerWithParameters<CAL>. pureQuery peut utiliser cette implémentation pour créer l'objet à renvoyer de la méthode annotée ou intégrée qui a exécuté l'instruction CALL. De plus, l'implémentation peut exécuter tout le processus supplémentaire dont vous pouvez avoir besoin comme la mise à jour des paramètres OUT et INOUT.

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.

L'interface CallHandlerWithParameters<T> possède une seule méthode :
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.

Si vous créez une implémentation de CallHandlerWithParameters<CAL>, implémentez cette méthode pour créer et renvoyer un objet de type <CAL> représentant les résultats de la procédure CALL enregistrée. Voici certaines activités que vous pouvez exécuter dans la méthode handleCall() :
  • Utilisez cstmt pour accéder aux objets ResultSet renvoyés par la procédure mémorisée et éventuellement stocker tout ou partie des résultats dans l'objet de type <CAL> renvoyé par la méthode. Pour plus d'informations sur l'interface java.sql.CallableStatement, voir Javadoc™ pour votre SDK Java™.
  • Utilisez cstmt pour accéder aux valeurs renvoyées par les paramètres OUT et INOUT de la procédure mémorisée et les intégrer à l'objet <CAL> obtenu.
  • • Utilisez cstmt pour accéder aux valeurs renvoyées par les paramètres OUT et INOUT de la procédure mémorisée et mettre à jour les paramètres transmis dans la méthode annotée ou intégrée avec les nouvelles valeurs.

Utilisation d'un objet CallHandlerWithParameters<CAL> avec les méthodes annotées

Il existe deux méthodes que vous pouvez utiliser pour appeler les objets CallHandlerWithParameter à partir des méthodes annotées.

Utilisation d'un objet CallHandlerWithParameters<CAL> avec les méthodes intégrées

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)

Commentaires