La seconda risposta rivista di Bozho era vicina ma non del tutto presente. Tuttavia, mi ha portato alla risposta.
Prendendo l'esempio di codice con cui ho iniziato, finiamo con:
CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);
I pezzi chiave qui sono "? =" davanti alla "chiamata" nel prepareCall
funzione che imposta una posizione per il valore restituito e il registerOutputParameter
. Deve essere registrato come intero, poiché il valore restituito è sempre un int (almeno in SQL Server, forse è diverso in altri DB). Devi quindi ottenerlo usando getInt
. Ho testato questo metodo e funziona.