18.8.3 | Rückgabewerte |
Prinzipiell werden zwei Techniken zur Rückgabe von Werten unterschieden:Rückgabewerte von Stored Functions werden hierbei genau wie OUT-Parameter bei Prozeduren/Funktionen behandelt.
- Jede Stored Function besitzt genau einen Rückgabewert, den sie als Ergebnis zurückliefert.
- Sowohl Stored Procedures als auch Stored Functions können Aufrufparameter definieren, die nicht nur übergeben werden, sondern über die Werte von der Datenbank zurückgeliefert werden (Parameter-Modus OUT oder IN OUT).
Für den Zugriff auf einen Rückgabewert muss man den Parameter zunächst vor der Ausführung der Funktion mit der Methode registerOutParameter() registrieren. Danach kann man die Stored Function ausführen und anschließend über getXXX()-Methoden das Ergebnis wie bei einem ResultSet abrufen:import java.sql.*; ... Connection con; String isbn; int bewertung; ... // Initialisierung String sql = "{ ? := call durchschnittliche_bewertung(?) }"; CallableStatement call = con.prepareCall(sql); // Setzen des Eingabe-Parameters call.setString(2, isbn); // Registrierung der Ausgabe-Parameter call.registerOutParameter(1, Types.NUMERIC); // Funktion ausführen call.executeUpdate(); // Ergebnis abrufen bewertung = call.getInt(1); ...registerOutParameter() werden Index und Typ des Parameters übergeben. Die Angabe des Typs erfolgt über die Konstanten der Klasse java.sql.Types.
Der Zugriff auf OUT und IN OUT-Parameter erfolgt nach demselben Prinzip, was sich dabei ändert, ist lediglich der Index des Parameters.