Bozhos 2. überarbeitete Antwort war nah dran, aber nicht ganz da. Es hat mich jedoch zur Antwort geführt.
Nehmen wir das Codebeispiel, mit dem ich begonnen habe, erhalten wir am Ende:
CallableStatement proc = connection.prepareCall("{ ? = call dbo.mySproc() }");
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
int returnValue = proc.getInt(1);
Die Schlüsselstücke hier sind das "? =" vor dem "Anruf" in prepareCall
Funktion, die einen Platz für den Rückgabewert und den registerOutputParameter
einrichtet . Es muss als Integer registriert werden, da der Rückgabewert immer ein Int ist (zumindest in SQL Server, vielleicht ist es in anderen DBs anders). Sie müssen es daher mit getInt
abrufen . Ich habe diese Methode getestet und sie funktioniert.