/** * Execute the desired Callable statement and then call dispResultSet to display the rows and * columns * * @param stmt CallableStatement object to be processed * @exception SQLException . */ public void displayRows(CallableStatement stmt) throws SQLException { boolean results = stmt.execute(); int rsnum = 0; // Number of Result Sets processed int rowsAffected = 0; do { if (results) { ResultSet rs = stmt.getResultSet(); output("\n\nDisplaying ResultSet: " + rsnum + "\n"); dispResultSet(rs); rsnum++; rs.close(); } else { rowsAffected = stmt.getUpdateCount(); if (rowsAffected >= 0) output(rowsAffected + " rows Affected.\n"); } results = stmt.getMoreResults(); } while (results || rowsAffected != -1); }
public void sampleCode() { // Variables for simple test case String procname = "sp_timestampSample"; /* *CREATE PROCEDURE* String createQuery1 = "create table spt_timestampSample(f1 int, f2 char(5), f3 timestamp )"; String insertQuery1 = "insert spt_timestampSample(f1,f2) values(1, 'Hello')"; // Sample Stored Procedure String dropProc = "drop proc " + procname; String createProc = "create proc " + procname + "(@p1 int, @p2 timestamp out)" + " as " + "select 'p1=' + convert(varchar(10),@p1) " + "select @p2 = f3 from spt_timestampSample where f1=1" + "select * from spt_timestampSample " + "return 21"; */ String sproc = "{? = call " + procname + "(?,?)}"; try { /* *CREATE PROCEDURE* // We will create a temp table which contains a timestamp column // and we will insert a row. We will then execute a stored // procedure which will returnt the timestamp column as an OUTPUT // parameter // Create our table execDDL( createQuery1); // Insert our row execDDL( insertQuery1); // Now create the Proc execDDL( createProc); */ // Now execute our Sproc CallableStatement cstmt = _con.prepareCall(sproc); output("Executing: " + sproc + "\n"); // Declare the IN Params. Note, you must skip the Return Status cstmt.setInt(2, 1961); // Now declare our OUT Params cstmt.registerOutParameter(1, Types.INTEGER); cstmt.registerOutParameter(3, Types.VARBINARY); boolean results = cstmt.execute(); int rsnum = 0; // Number of Result Sets processed int rowsAffected = 0; do { if (results) { ResultSet rs = cstmt.getResultSet(); output("\n\nDisplaying ResultSet: " + rsnum + "\n"); dispResultSet(rs); rsnum++; rs.close(); } else { rowsAffected = cstmt.getUpdateCount(); if (rowsAffected >= 0) output(rowsAffected + " rows Affected.\n"); } results = cstmt.getMoreResults(); } while (results || rowsAffected != -1); String s = cstmt.getString(1); String s2 = cstmt.getString(3); // Now grab the same output parameter as VARBINARY byte[] ts = cstmt.getBytes(3); // Display the Output Parameters output("OUT Param1=" + s + "\n"); output("OUT Param2 as String=" + s2 + "\n"); output("OUT Param2 as byte[]=" + toHexString(ts) + "\n"); cstmt.close(); /* *CREATE PROCEDURE* // Drop our sproc execDDL( dropProc); */ } catch (SQLException ex) { displaySQLEx(ex); } catch (java.lang.Exception ex) { // Got some other type of exception. Dump it. ex.printStackTrace(); } }