2013-07-24 1 views
2

так пытался поставить этот код SQL в мой Java-Aplication:реализация SQL Firebird в Java/IBSQL

SELECT DISTINCT 
    StRzImRo.Rohstoff, StRo.Bezeichnung, 
CAST (SUM(BwLsImAt.Lieferungen * StRzImRo.Menge * StAt.PROD__REZEPTURGEWICHT/Coalesce(StRz.PARM__BEZUGSGROESSE,1)) AS NUMERIC (9,3)) Rohstoffverbrauch_Gesamt FROM BwLsImAt  

JOIN StAt ON (StAt.IntRowId = BwLsImAt.Artikel) 
JOIN StRz ON (StRz.IntRowId = StAt.PROD__REZEPTUR) 
JOIN StRzImRo ON (StRzImRo.Master = StRz.IntRowId) 
JOIN StRo ON (StRzImRo.Rohstoff = StRo.IntRowId) 
WHERE StAt.IntRowId > 0 
GROUP BY StRzImRo.Rohstoff, StRo.Bezeichnung 
-- GROUP BY StRzImRo.Rohstoff, StRzImRo.Menge, StAt.PROD__REZEPTURGEWICHT, Coalesce(StRz.PARM__BEZUGSGROESSE,1) 

Код полностью funcional и испытаны в IBSQL, но не работает в моей Java-приложение. Мое приложение действительно работает с другим кодом. Я получаю эту ошибку:

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error 
SQL error code = -104 
Token unknown - line 1, column 266 
ON 

Я был бы очень рад, если бы кто-то помог мне с этой проблемой. Благодаря! PS: Извините за мой плохой язык, но я не носитель языка

+0

Возможно, вы захотите опубликовать код с запросом точно так же, как в своем приложении Java. Ошибка говорит о том, что в вашем запросе есть «ВКЛ», и, поскольку сам запрос выглядит отлично, я думаю, проблема связана с тем, как вы строите запрос в своем приложении Java. В вашем запросе может отсутствовать пробел. –

+0

Благодарим за помощь! Да, в моем java-приложении отсутствовало пробелы «FROM BwLsImAt». Благодаря! – Jacob

+0

Я также отправил свой комментарий в качестве ответа –

ответ

2

Ошибка предполагает наличие ON в непредвиденном месте в вашем запросе, и, поскольку сам запрос выглядит хорошо, моя догадка заключается в том, что проблема заключается в том, с тем, как вы строите запрос в своем приложении Java. В вашем запросе может отсутствовать пробел.

Я предполагаю, что у вас есть что-то вроде

query = "SELECT * " + 
     "FROM table1" + 
     "JOIN table2 ON " //..... 

Отсутствующий пробельные сделает SQL:

SELECT * FROM table1JOIN table2 ON .... 

Для синтаксического анализатора, это вполне допустимо, пока он не встречает ON маркер, который вызывает ошибку. Например, синтаксический анализатор идентифицирует это SELECT с колонками * (все) от table1JOIN с псевдонимом table2. Во время разбора сервер не проверяет, действительно ли таблица существует, поэтому она не отключается от того, что table1JOIN не существует. Это проверяется после успешного завершения анализа.

 Смежные вопросы

  • Нет связанных вопросов^_^