我打电话一个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
因为它返回结果集返回null false作为循环条件。
我把一个固定数量,以结束条件未返回所需的结果集,以防止它进入无限循环的循环。 它的工作很好,但我不认为这是正确的。
我认为在Sybase分配返回空结果集select @variable = value
有没有人遇到这样?