Stored procedure with Input/Output parms and a ResultSet Thanks to T. Guirado for the tips. public static int storedProcWithResultSet (String parms) throws Exception // Stored procedure to be called. CallableStatement cs = conn.prepareCall ("{? = call mypackage.p_astoreproc (?,?,?,?,?,?,?)}"); // register input parameters cs.setString(2, ""); cs.setString(3, ""); cs.setString(4, parms); // regsiter ouput parameters cs.registerOutParameter(5, java.sql.Types.CHAR); cs.registerOutParameter(6, java.sql.Types.CHAR); cs.registerOutParameter(7, java.sql.Types.CHAR); // Procedure execution ResultSet rs = cs.executeQuery(); // Note that you need to retrieve the ResultSet _before_ retrieving // OUTPUT parameters. if ( rs == null) System.out.println( "No resultSet!"); else { // To retrieve columns info. ResultSetMetaData rsmd = rs.getMetaData(); int nbCol = rsmd.getColumnCount();
int i = 0; int j = 1;
Vector vResSet = new Vector(); while (rs.next ()) { System.out.println( "Record " + (i+1)); // putting the ResultSet columns in a vector for ( j = 1; j <= nbCol ; j++){ vResSet.insertElementAt(rs.getString(j), 0); vResSet.addElement(rs.getString(j)); } // Reading vector to print ResultSet data for ( int k = 0 ; k < nbColonnes ; k++ ) { if ( vResSet.elementAt(k) != null) System.out.println( vResSet.elementAt(k).toString()); else System.out.println( "Column " + (k+1) + " Null"); } i++; } } // Retrieving Strored Procedure OUTPUT parameters System.out.println( "return code of Stored procedure = : " + cs.getInt(1));
// Retrieving OUTPUT parameters for ( int i = 5 ; i <= 7; i ++) System.out.println( "parameter " + i + " : " + cs.getString(i)); return cs.getInt(1); }
Thanks to T. Guirado for the tips. public static int storedProcWithResultSet (String parms) throws Exception
// Stored procedure to be called.
CallableStatement cs = conn.prepareCall
("{? = call mypackage.p_astoreproc (?,?,?,?,?,?,?)}"); // register input parameters
cs.setString(2, "");
cs.setString(3, "");
cs.setString(4, parms);
// regsiter ouput parameters
cs.registerOutParameter(5, java.sql.Types.CHAR);
cs.registerOutParameter(6, java.sql.Types.CHAR);
cs.registerOutParameter(7, java.sql.Types.CHAR); // Procedure execution
ResultSet rs = cs.executeQuery(); // Note that you need to retrieve the ResultSet _before_ retrieving
// OUTPUT parameters.
if ( rs == null)
System.out.println( "No resultSet!");
else {
// To retrieve columns info.
ResultSetMetaData rsmd = rs.getMetaData();
int nbCol = rsmd.getColumnCount();
int i = 0;
int j = 1;
Vector vResSet = new Vector();
while (rs.next ()) {
System.out.println( "Record " + (i+1));
// putting the ResultSet columns in a vector
for ( j = 1; j <= nbCol ; j++){
vResSet.insertElementAt(rs.getString(j), 0);
vResSet.addElement(rs.getString(j));
} // Reading vector to print ResultSet data
for ( int k = 0 ; k < nbColonnes ; k++ ) {
if ( vResSet.elementAt(k) != null)
System.out.println( vResSet.elementAt(k).toString());
else
System.out.println( "Column " + (k+1) + " Null");
}
i++;
}
} // Retrieving Strored Procedure OUTPUT parameters
System.out.println( "return code of Stored procedure = : " + cs.getInt(1));
// Retrieving OUTPUT parameters
for ( int i = 5 ; i <= 7; i ++)
System.out.println( "parameter " + i + " : " + cs.getString(i)); return cs.getInt(1);
}