Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abrufen des Rückgabewerts von JDBC MSSQL

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.