Bozhos andra reviderade svar var nära men inte riktigt där. Det ledde mig dock till svaret.
Om vi tar kodexemplet som jag började med slutar vi med:
CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);
Nyckeldelarna här är "? =" framför "samtal" i prepareCall
funktion som ställer in en plats för returvärdet och registerOutputParameter
. Det måste registreras som ett heltal, eftersom returvärdet alltid är en int (åtminstone i SQL Server, kanske är det annorlunda i andra DB). Du måste därför skaffa den med getInt
. Jag testade den här metoden och den fungerar.