Это запрос, который я выполняю в базе данных:
SELECT CD_MAT, SUM(QT_MAT_UTIL) AS QT_MAT_UTIL FROM T476
WHERE (CD_UN_EXEC_SERV= 'X10' OR CD_UN_EXEC_SERV IN (SELECT
A.CD_UN_ORGANIZ FROM T016 A WHERE A.CD_UN_ORGANIZ_HIE ='X10'))
AND MM_RA_EXEC = 6 AND AA_RA_EXEC = 2016
AND CD_MAT = 15210001010
GROUP BY CD_MAT
ORDER BY 1 ASC, 2 DESC;
И вот результат, который я получаю, когда запускаю его в IBM Acess:
И этот результат правильный.
Но когда я запускаю тот же запрос в Java с помощью ResultSet, я получаю следующий результат:
Понятия не имею, почему это происходит.Кто-нибудь знает, что я делаю неправильно?
Это мой Java-код (я абсолютно уверен, что переменные верны):
public ArrayList<Map<String, Object>> myProblematicMethod(String cod, Integer first, Integer last) throws Excecao {
ArrayList<Map<String, Object>> lista;
lista = new ArrayList<>();
try {
StringBuffer sql = new StringBuffer();
sql.append("SELECT CD_MAT , SUM(QT_MAT_UTIL) AS QT_MAT_UTIL FROM T476 ");
sql.append(" WHERE (CD_UN_EXEC_SERV = ? OR CD_UN_EXEC_SERV ");
sql.append(" IN (SELECT A.CD_UN_ORGANIZ FROM T016 A ");
sql.append(" WHERE A.CD_UN_ORGANIZ_HIE = ?)) ");
sql.append(" AND MM_RA_EXEC= ? AND AA_RA_EXEC= ? ");
sql.append(" AND CD_MAT = 15210001010 ");
sql.append(" GROUP BY CD_MAT ORDER BY 1 ASC, 2 DESC ");
PreparedStatement ps = this.banco.criarPS(sql.toString());
ps.setString(1, cod);
ps.setString(2, cod);
ps.setInt(3, first);
ps.setInt(4, last);
ResultSet resultSet = this.banco.consultarSQL(ps);
while (resultSet.next()) {
LinkedHashMap<String, Object> materiais = new LinkedHashMap<>();
// campos presentes em todas as consultas realizadas
materiais.put("cod", resultSet.getString("CD_MAT"));
materiais.put("qnt", resultSet.getBigDecimal("QT_MAT_UTIL"));
lista.add(materiais);
}
} catch (SQLException e) {
e.printStackTrace();
throw new Excecao(e.getErrorCode(), e.getSQLState() + " - " + e.getMessage());
}
return lista;
}
Java невернуть мне любое исключение, и нет другого столбца с тем значением, которое он возвращает.Я использую Java 1.8.0_65.