package testsuite.simple; import java.sql.CallableStatement; import java.sql.SQLException; import java.sql.Types; import testsuite.BaseTestCase; public class TestBug57183 extends BaseTestCase { public TestBug57183(String name) { super(name); } public static void main(String[] args) { junit.textui.TestRunner.run(TestBug57183.class); } public void testBug57183() throws Exception { String STORED_PROC = "InOutArgsSP"; this.stmt.execute( "CREATE PROCEDURE " + STORED_PROC + " (IN T VARCHAR(20), OUT U VARCHAR(20), OUT V NUMERIC)" + "\nBEGIN" + "\n\tset U = CONCAT('barf-' , T);" + "\n\tset V = 55;" + "\nEND"); try { CallableStatement cStmt = call(STORED_PROC); assertEquals("barf-yuck", cStmt.getString(2)); assertEquals(55, cStmt.getInt(3)); STORED_PROC = "test.InOutArgsSP"; cStmt = call(STORED_PROC); assertEquals("barf-yuck", cStmt.getString(2)); assertEquals(55, cStmt.getInt(3)); } catch (Exception e) { e.printStackTrace(); } finally { this.stmt.execute("DROP PROCEDURE InOutArgsSP"); } } private CallableStatement call(String name) throws SQLException { CallableStatement cStmt = conn.prepareCall("{ CALL " + name + "(?, ?, ?) }"); cStmt.setObject(1, "yuck", Types.VARCHAR); cStmt.registerOutParameter(2, Types.VARCHAR); cStmt.registerOutParameter(3, Types.INTEGER); cStmt.execute(); return cStmt; } }