14

我正在通过 jcc 执行 SQL 查询以运行报告。当我打开程序的错误日志文件并检查 SQL 查询时,一切似乎都很好(没有多余或缺少的括号、逗号等,语法很好)但是当我执行时,我收到了这个错误:

[Report.execute()] DB2 SQL 错误:SQLCODE=-104, SQLSTATE=42601, SQLERRMC=,;ATE IN (1,2,3,10,1) ;, DRIVER=4.12.55

当我研究 SQLCODE 时,我发现这意味着查询中存在非法符号。我可以寻找什么来找到这个非法符号?

这是查询

在此处输入图像描述

很抱歉字体很小,但如果你放大 200% 左右,你可以更好地看到查询。

非常感谢 :)

4

4 回答 4

17

您在此行的末尾有一个逗号(不应该出现的地方):

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

以下行也有同样的问题。

于 2013-02-22T10:55:51.467 回答
4

通常,此 SQL 错误代码表示您插入了一些额外的字符,例如',''('')' 之类的。检查跟踪中的完整查询将有助于在 Java 程序等中编写 Sql 查询的人,因为我花了大约 2 个小时才弄清楚我的查询中有一个额外的 ')'。

于 2015-08-24T12:03:03.117 回答
0

在我的情况下问题略有不同我想加入两个表,然后将数据从 Table2 复制到 Table1 相应的列 My Query (DB2) update Table1 T1, Table2 T2 set T1.DEST_COLMN= T2.SRC_COLMN where T1.ID= T2.ID

正确 Query update Table1 T1 set T1.DEST_COLMN = (select SRC_COLMN from Table2 T2 where T1.ID= T2.ID)

于 2015-12-24T09:58:29.710 回答
0

我崩溃了这个错误,因为我的查询生成器参数之一为空并且查询类似于“.. OrderType = 'CM' and null”。

于 2016-08-19T11:16:57.040 回答