У меня есть мнение в моей DBM, который выглядит следующим образом:функция Pl SQL делает возврат товара Java-приложение 0
SELECT CDN, DN_GRUPPE, AFSLUTTET_AF AS INITIALS, AGENTGRUPPE AS AGENTGROUP, STATUS, CREATED, LAST_UPD , TRUNC(LAST_UPD)- TRUNC(CREATED) AS SOLVED_SECONDS
FROM [email protected] LEFT JOIN KS_DRIFT.SYS_DATE_KS AA ON TO_DATE(TRUNC(LAST_UPD),'YYYY-MM-DD') = AA.THIS_DATE
WHERE TIDSPUNKT > (SYSDATE - 427)
Когда мой Java приложение пытается получить выбранный столбец SOLVED_SECONDS
возвращает значения, как это должно быть.
ОДНАКО, если я изменить вид на следующее:
SELECT CDN, DN_GRUPPE, AFSLUTTET_AF AS INITIALS, AGENTGRUPPE AS AGENTGROUP, STATUS, CREATED, LAST_UPD , CASE WHEN CALCULATE_CALLBACK_DURATION(CREATED,LAST_UPD) is NULL THEN
CALCULATE_CALLBACK_DURATION(AA.THIS_DATE_OPENING, LAST_UPD) ELSE
CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD) END AS SOLVED_SECONDS
FROM [email protected] LEFT JOIN KS_DRIFT.SYS_DATE_KS AA ON TO_DATE(TRUNC(LAST_UPD),'YYYY-MM-DD') = AA.THIS_DATE
WHERE TIDSPUNKT > (SYSDATE - 427)
Т.е. добавить свою собственную функцию (CALCULATE_CALLBACK_DURATION
), то результат моего Java приложения является = 0. Не нуль не NaN только 0.
Например, если я использую следующий код в моем приложении Java:
public ArrayList<CallQueue> getCallbacks(String startDate, String endDate,
char c, ArrayList<CallQueue> data) {
DateTime end = new DateTime(endDate);
// this method is currently used for testing purposes
String sql = "SELECT SOLVED_SECONDS FROM KS_DRIFT.NYK_SIEBEL_CALLBACK_AGENT_H_V ";
System.out.println(sql);
ResultSet rs = getTable(sql);
try {
while (rs.next()) {
System.out.println(rs.getInt("SOLVED_SECONDS"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
private ResultSet getTable(String sql){
try {
return Hent_tabel(sql);
} catch (SQLException e) {e.printStackTrace();}
return null;
}
public ResultSet Hent_tabel(String Execute) throws SQLException {
return db.executeQuery(Execute);
}
в приведенном выше примере приложение будет печатать «0» для каждой из строк в таблице. Однако, если я посмотрю в таблице через свой DBM, в столбце отображается нужный номер SOLVED_SECONDS
Я чувствую, что я пробовал все, и я просто не могу найти проблему. если вам нужна дополнительная информация, пожалуйста, дайте мне знать!
Примечание - в приведенном выше примере я могу получить любой другой столбец в таблице с правильным результатом ожидать отSOLVED_SECONDS
UPDATE
Если я использую Resultset.wasNull();
я получаю исключение, поскольку данные не были прочитаны.
Вот скриншот SOLVED_SECONDS
в моем DBM
А вот выход из Java:
Обратите внимание, что следующий вывод является лишь небольшой проблеск 0 сохраняются для каждой из строк в базе данных.
UPDATE созданный вид:
Ниже приводится полное определение по мнению:
Create View KS_DRIFT.NYK_SIEBEL_CALLBACK_AGENT_H_V (CDN, DN_GRUPPE, INITIALS, AGENTGROUP, STATUS, CREATED, LAST_UPD, SOLVED_SECONDS)
As
SELECT
CDN, DN_GRUPPE, AFSLUTTET_AF AS INITIALS,
AGENTGRUPPE AS AGENTGROUP, STATUS, CREATED, LAST_UPD ,
CASE WHEN CALCULATE_CALLBACK_DURATION(CREATED,LAST_UPD) is NULL
THEN CALCULATE_CALLBACK_DURATION(AA.THIS_DATE_OPENING, LAST_UPD)
ELSE CALCULATE_CALLBACK_DURATION(CREATED, LAST_UPD)
END AS SOLVED_SECONDS
FROM
[email protected]
LEFT JOIN
KS_DRIFT.SYS_DATE_KS AA ON TO_DATE(TRUNC(LAST_UPD),'YYYY-MM-DD') = AA.THIS_DATE
WHERE
TIDSPUNKT > (SYSDATE - 427)
Не могли бы вы обновить код Java до фактического кода, который вы выполняете? Ваш текущий код не будет компилироваться ... –
Вы уверены, что проверяете свой второй запрос в базе данных? Возможно, представление возвращает нуль, вероятно, из-за вашего дела. –
@MarcRasmussen: Я не хочу быть слишком придирчивым, но чтобы исключить, что вы делаете что-то не так на стороне JDBC, мне действительно нужно увидеть фактический код. Ваш опубликованный код не будет компилироваться ('.next' без круглых скобок,' Resultset' с строчными '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '). Пожалуйста, отправьте код, который вы * успешно выполнили *, который дает вам ненужные нули –