Я вызываю хранимую процедуру 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
возвращает много пустых ResultSets, пока она не достигнет цели один. Я не могу использовать cs.getMoreResults
как условие цикла, потому что он возвращает false для нулевых наборов результатов.
Я положил фиксированное число, чтобы закончить цикл в условии, что желаемый результирующий набор не был возвращен, чтобы предотвратить его переход в бесконечный цикл. Он работал нормально, но я не думаю, что это правильно.
Я думаю, что нулевые результирующих возвращаемые задания в Sybase select @variable = value
Кто-нибудь сталкивался раньше?
Я побежал в этот же вопрос с Sql Server и вы ответ помог мне решить. Я не мог понять, почему 'stmt.execute()' с некоторыми данными возвратит 'false', хотя я мог бы четко видеть данные в наборах результатов, возвращаемых при его запуске вручную. Я все еще не уверен, что понимаю «updateCount()», так как я не верю, что хранимая процедура фактически обновляет любые данные. – Catfish
@Catfish Вы можете попробовать добавить «SET NOCOUNT ON» в ваш sp. –
У меня нет доступа для изменения хранимой процедуры. Вы отвечаете, кажется, работает в моем случае. Благодарю. – Catfish