Вторият преработен отговор на Божо беше близо, но не съвсем. Това обаче ме доведе до отговора.
Вземайки примера с код, с който започнах, в крайна сметка получаваме:
CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);
Ключовите елементи тук са "? =" пред "call" в prepareCall
функция, която задава място за връщаната стойност и registerOutputParameter
. Тя трябва да бъде регистрирана като цяло число, тъй като връщаната стойност винаги е int (поне в SQL Server, може би е различно в други DB). Следователно трябва да го получите с помощта на getInt
. Тествах този метод и той работи.