Resultados nulos ao chamar o procedimento armazenado do Sybase por meio do JDBC
Estou chamando um procedimento armazenado do Sybase que retorna vários conjuntos de resultados por meio do JDBC. Eu preciso obter um conjunto de resultados específico que tem uma coluna chamada "Resultado" Este é o meu código:
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++;
}
O que acontece aqui é quecs.getMoreResults
devolve muitos conjuntos de resultados nulos até atingir o alvo. Não posso usarcs.getMoreResults
como condição de loop porque retorna false para conjuntos de resultados nulos.
Eu coloquei um número fixo para terminar o loop em condição que o conjunto de resultados desejado não foi retornado para impedir que ele entrasse em loop infinito. Funcionou bem, mas não acho que isso esteja certo.
Eu acho que os conjuntos de resultados nulos retornados da atribuição no Sybaseselect @variable = value
Alguém já enfrentou isso antes?