Что может представлять SQL CODE -104 (ошибка)?

Я выполняю запрос SQL через jcc для запуска отчета. Когда я открыл файл журнала ошибок для программы и изучил SQL-запрос, все было в порядке (нет лишних или пропущенных скобок, запятых и т. Д. И синтаксис хороший), однако при выполнении я получаю эту ошибку:

[Report.execute ()] Ошибка SQL DB2: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=,;ATE IN (1,2,3,10,1);, DRIVER=4.12.55

Когда я исследовал SQLCODE, я обнаружил, что в запросе есть недопустимый символ. Что я могу найти, чтобы найти этот незаконный символ?

Это запрос

Извините за крошечный шрифт, но если вы увеличите 200% или около того, вы сможете лучше увидеть запрос.

Большое спасибо:)

4 ответа

Решение

У вас есть запятая (где вы не должны) в конце этой строки:

AND Tick.STATE IN (1,2,3,10,1),

Следующая строка также имеет ту же проблему.

Как правило, этот код ошибки SQL означает, что вы вставили несколько дополнительных символов, таких как ',' или '(' или ')' или как-то еще. Проверка полного запроса в трассировке поможет людям, которые пишут запросы Sql внутри Java-программы или около того, так как мне потребовалось около 2 часов, чтобы понять, что у меня есть дополнительный знак ")" в моем запросе.

В моем случае проблема немного отличалась: я хотел соединить две таблицы, а затем скопировать данные из соответствующего столбца Таблица2 в соответствующий столбец Таблицы1. Обновление таблицы T1, таблицы 2 T2 T1.DEST_COLMN= T2.SRC_COLMN, где T1.ID = T2.ID

Корректное обновление запроса Table1 T1 set T1.DEST_COLMN = (выберите SRC_COLMN из Table2 T2, где T1.ID= T2.ID)

Я вывел эту ошибку из-за того, что один из параметров моего построителя запросов был нулевым, а запрос был что-то вроде ".. OrderType = 'CM' and null".

Другие вопросы по тегам