Нулевые результаты при вызове хранимой процедуры Sybase через JDBC
Я вызываю хранимую процедуру Sybase, которая возвращает несколько наборов результатов через JDBC. Мне нужно получить конкретный набор результатов, который имеет столбец с именем «Результат» Это мой код:
CallableStatement cs = conn.prepareCall(sqlCall);
cs.registerOutParameter(1, Types.VARCHAR);
cs.execute();
ResultSet rs=null;
int count = 1;
boolean flag = true;
while (count < 20000 && flag == true) {
cs.getMoreResults();
rs = cs.getResultSet();
if (rs != null) {
ResultSetMetaData resultSetMetaData = rs.getMetaData();
int columnsCount = resultSetMetaData.getColumnCount();
if (resultSetMetaData.getColumnName(1).equals("Result")) {
// action code resultset found
flag = false;
// loop on the resultset and add the elements returned to an array list
while (rs.next()) {
int x = 1;
while (x <= columnsCount) {
result.add(rs.getString(x));
x++;
}
}
result.add(0, cs.getString(1));
}
}
count++;
}
Что здесь происходит, так этоcs.getMoreResults
возвращает множество нулевых результатов, пока не достигнет целевого. Я не могу использоватьcs.getMoreResults
как условие цикла, потому что оно возвращает false для нулевых результатов.
Я поставил фиксированное число, чтобы завершить цикл, при условии, что требуемый набор результатов не был возвращен, чтобы предотвратить его переход в бесконечный цикл. Это работало нормально, но я не думаю, что это правильно.
Я думаю, что нулевые результаты возвращаются из назначения в Sybaseselect @variable = value
Кто-нибудь сталкивался с этим раньше?