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();
}
}
}