public static void toJson(ResultSet obj, java.util.Map<String, Object> json) { if (obj.getColumnNames() != null) { JsonArray array = new JsonArray(); obj.getColumnNames().forEach(item -> array.add(item)); json.put("columnNames", array); } if (obj.getNext() != null) { json.put("next", obj.getNext().toJson()); } json.put("numColumns", obj.getNumColumns()); json.put("numRows", obj.getNumRows()); if (obj.getOutput() != null) { json.put("output", obj.getOutput()); } if (obj.getResults() != null) { JsonArray array = new JsonArray(); obj.getResults().forEach(item -> array.add(item)); json.put("results", array); } if (obj.getRows() != null) { JsonArray array = new JsonArray(); obj.getRows().forEach(item -> array.add(item)); json.put("rows", array); } } }
@Override public io.vertx.ext.sql.ResultSet execute(Connection conn) throws SQLException { try (PreparedStatement statement = conn.prepareStatement(sql)) { // apply statement options applyStatementOptions(statement); helper.fillStatement(statement, in); boolean retResult = statement.execute(); io.vertx.ext.sql.ResultSet resultSet = null; if (retResult) { io.vertx.ext.sql.ResultSet ref = null; // normal return only while (retResult) { try (ResultSet rs = statement.getResultSet()) { // 1st rs if (ref == null) { resultSet = helper.asList(rs); ref = resultSet; } else { ref.setNext(helper.asList(rs)); ref = ref.getNext(); } } retResult = statement.getMoreResults(); } } return resultSet; } }
} else { ref.setNext(helper.asList(rs)); ref = ref.getNext();
@Test public void testMultiSelect() { String sql = "{ call MS() }"; final SQLConnection conn = connection(); conn.execute("CREATE PROCEDURE MS() PARAMETER STYLE JAVA LANGUAGE JAVA READS SQL DATA DYNAMIC RESULT SETS 2 EXTERNAL NAME 'io.vertx.ext.jdbc.Functions.multiSelect'", onSuccess(res -> { conn.call(sql, onSuccess(resultSet -> { assertNotNull(resultSet); assertNotNull(resultSet.getNext()); testComplete(); })); })); await(); }