This example shows how to access a database and then create a procedure with return values.
import java.sql.*; import java.util.Properties; public class CallableStatementExample3 { public static void main(java.lang.String[] args) { // Register the native JDBC driver. If the driver cannot // be registered, the test cannot continue. try { Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); // Create the connection properties Properties properties = new Properties (); properties.put ("user", "userid"); properties.put ("password", "password"); // Connect to the local iSeries database Connection c = DriverManager.getConnection("jdbc:db2://*local", properties); Statement s = c.createStatement(); // Create a procedure with a return value. String sql = "CREATE PROCEDURE MYLIBRARY.SQLSPEX3 " + " LANGUAGE SQL SPECIFIC MYLIBRARY.SQLSPEX3 " + " EX3: BEGIN " + " RETURN 1976; " + " END EX3 "; try { s.executeUpdate(sql); } catch (SQLException e) { // NOTE: The error is ignored here. The assumptions is // made that the only reason this fails is // because the procedure already exists. Other // reasons that it could fail are because the C compiler // is not found to compile the procedure or because // collection MYLIBRARY does not exist on the system. } s.close(); // Prepare a callable statement used to run the procedure. CallableStatement cs = c.prepareCall("? = CALL MYLIBRARY.SQLSPEX3"); // You still need to register the output parameter. cs.registerOutParameter(1, Types.INTEGER); // Run the procedure. cs.executeUpdate(); // Show that the correct value is returned. System.out.println("The return value should always be 1976 for this example: --> " + cs.getInt(1)); cs.close(); // close the CallableStatement object c.close(); // close the Connection object. } catch (Exception e) { System.out.println("Something failed.."); System.out.println("Reason: " + e.getMessage()); e.printStackTrace(); } } }