Это невозможно. Заменить
conn.prepareCall("{call get_data(?)}");
от
conn.prepareCall("{call get_data(?, ?)}");
и заменить
test.setObject(1, arrayObj);
от
test.setObject(1, arrayObj[0]);
test.setObject(2, arrayObj[1]);
Похожие вопросы:
Обновление : сделайте все это более "динамически", вы бы хотели сгенерировать и заполнить заполнители самостоятельно с помощью следующих двух служебных методов:
public static String preparePlaceHolders(int length) {
StringBuilder builder = new StringBuilder(length * 2 - 1);
for (int i = 0; i < length; i++) {
if (i > 0) builder.append(',');
builder.append('?');
}
return builder.toString();
}
public static void setValues(PreparedStatement preparedStatement, Object... values) throws SQLException {
for (int i = 0; i < values.length; i++) {
preparedStatement.setObject(i + 1, values[i]);
}
}
, который можно использовать следующим образом:
private static final String SQL_CALL_GET_DATA = "{call get_data(%s)}";
// ...
String sql = String.format(SQL_CALL_GET_DATA, preparePlaceholders(arrayObj.length));
statement = connection.prepareCall(sql);
setValues(statement, arrayObj);
// ...