La deuxième réponse révisée de Bozho était proche mais pas tout à fait là. Cela m'a cependant conduit à la réponse.
En prenant l'exemple de code avec lequel j'ai commencé, nous nous retrouvons avec :
CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);
Les éléments clés ici sont le "? =" devant le "call" dans le prepareCall
fonction qui met en place une place pour la valeur de retour et le registerOutputParameter
. Il doit être enregistré en tant qu'entier, car la valeur de retour est toujours un int (au moins dans SQL Server, c'est peut-être différent dans d'autres bases de données). Il faut donc l'obtenir en utilisant getInt
. J'ai testé cette méthode et ça marche.