Ошибка при запуске команды SQL из JDBC - java.sql.SQLSyntaxErrorException - PullRequest
1 голос
/ 22 мая 2019

У меня есть SQL-запрос, который я запускаю на SQL плюс, и я получаю результат. Тот же запрос, когда я запускаю из кода Java - JDBC я получаю исключение -

java.sql.SQLSyntaxErrorException: ORA-00933: команда SQL неправильно закончился.

Запрос

select prod_id, prod_area, prod_name, step_name,
       to_char(entry_time, 'DD/MM/YYYY HH24:MI:SS') as entry_time,
       round(extract(day from current_timestamp - entry_time)*1440 +
             extract(hour from current_timestamp - entry_time)*60 +
             extract(minute from current_timestamp - entry_time)) as pending_minutes
from prodreport
where exit_time is null;

Java-код

String query = "select prod_id,prod_area,prod_name,step_name,to_char(entry_time, 'DD/MM/YYYY HH24:MI:SS') as entry_time, round(extract(day from current_timestamp - entry_time)*1440 + extract(hour from current_timestamp - entry_time)*60 + extract(minute from current_timestamp - entry_time)) as pending_minutes from prodreport where exit_time is null;"

1 Ответ

0 голосов
/ 11 июня 2019

Возможно, это из-за точки с запятой (;), которую вы отправляете с запросом.Пожалуйста, ознакомьтесь с его использованием, это может помочь.

Точка с запятой

Точка с запятой - это терминатор оператора.Он является частью стандарта ANSI SQL-92, но никогда не использовался в Transact-SQL.Действительно, можно годами кодировать T-SQL, не встречая точку с запятой.

Использование

Существует две ситуации, в которых необходимо использовать точку с запятой.Первая ситуация, когда вы используете общее табличное выражение (CTE), а CTE не является первым оператором в пакете.Во втором случае вы выполняете оператор Service Broker, а оператор Service Broker не является первым оператором в пакете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...