import testsuite.BaseTestCase; import java.sql.*; public class bug60816 extends BaseTestCase { public bug60816(String name) { super(name); } public static void main(String[] args) { junit.textui.TestRunner.run(bug60816.class); } public void testbug60816() throws Exception { try { this.stmt.execute("drop procedure if exists test1"); this.stmt.execute("drop procedure if exists test2"); this.stmt.execute("CREATE PROCEDURE test1 (INOUT x INTEGER)BEGIN SET x = x + 1;END "); this.stmt.execute("CREATE PROCEDURE test2 (x INTEGER, OUT y INTEGER)BEGIN SET y = x + 1;END "); CallableStatement call = this.conn.prepareCall("{ call test.test1(?) }"); call.setInt(1, 1); call.registerOutParameter(1, Types.INTEGER); call.execute(); assertEquals(2, call.getInt(1)); call = this.conn.prepareCall("{ call test.test2(?, ?) }"); call.setInt(1, 1); call.registerOutParameter(2, Types.INTEGER); call.execute(); assertEquals(2, call.getInt(2)); call = this.conn.prepareCall("{ call test.test2(?, ?) }"); call.setNull(1, Types.INTEGER); call.registerOutParameter(2, Types.INTEGER); call.execute(); assertEquals(0, call.getInt(2)); assertTrue(call.wasNull()); call = this.conn.prepareCall("{ call test.test1(?) }"); call.setNull(1, Types.INTEGER); call.registerOutParameter(1, Types.INTEGER); call.execute(); } finally { this.stmt.execute("drop procedure if exists test1"); this.stmt.execute("drop procedure if exists test2"); //closeMemberJDBCResources(); } } }