Druga poprawiona odpowiedź Bozho była bliska, ale nie do końca. Doprowadziło mnie to jednak do odpowiedzi.
Biorąc przykład kodu, od którego zacząłem, otrzymujemy:
CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);
Kluczowe elementy to „? =" przed „call” w prepareCall
funkcja ustawiająca miejsce na zwracaną wartość i registerOutputParameter
. Musi być zarejestrowany jako Integer, ponieważ zwracana wartość jest zawsze int (przynajmniej w SQL Server, może jest inna w innych bazach danych). Dlatego musisz to uzyskać za pomocą getInt
. Przetestowałem tę metodę i działa.