所以尝试将该 SQL 代码放入我的 java 应用程序中:
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)
该代码功能齐全,并在 SQL 中进行了测试,但在我的 java 应用程序中不起作用。
我的应用程序可以与其他代码一起正常工作。我收到此错误:
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 266
ON
如果有人能帮助我解决这个问题,我会很高兴。谢谢!
P.S.:抱歉我的语言不好,但我不是母语人士
该错误表明有一个ON
在查询中意想不到的地方,并且由于查询本身看起来很好,我猜测问题在于您在 Java 应用程序中构造查询的方式。您的查询中可能缺少一些空格。
我猜你有类似的东西
query = "SELECT * " +
"FROM table1" +
"JOIN table2 ON " //.....
缺少的空格将使 SQL:
SELECT * FROM table1JOIN table2 ON ....
对于解析器来说,这是完全有效的,直到遇到ON
令牌,这会触发错误。例如,解析器识别出它是SELECT
with *
(所有)列来自table1JOIN
有别名table2
。在解析过程中,服务器不会检查该表是否确实存在,因此它不会因为以下事实而出错:table1JOIN
不存在。解析成功完成后将进行检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)