gpt4 book ai didi

java - java/IBSQL 中的 SQL Firebird 实现

转载 作者:行者123 更新时间:2023-11-30 09:19:42 25 4
gpt4 key购买 nike

所以尝试将该 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)

该代码在 IBSQL 中具有完整的功能和测试,但在我的 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,其中 *(所有)列来自 table1JOIN,别名 table2。在解析期间,服务器不会检查表是否实际存在,因此它不会因为 table1JOIN 不存在这一事实而被绊倒。解析成功完成后进行检查。

关于java - java/IBSQL 中的 SQL Firebird 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17831234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com