DB2 SQL - PreparedStatement未解决的无类型表达式错误

时间:2018-05-22 16:25:24

标签: sql db2 prepared-statement

在处理PreparedStatement时,我遇到了一个奇怪的错误。

这是在Squirrel SQL中运行的查询:

SELECT CUSTOMER, MAX(TRANSACTION_COUNT) as UNIT_COUNT, '2018-05-20' as EVENT_DATE, 'XYZ File Transfer' as TYPE, 'Financial Report' as EVENT 
FROM  REPORT_TABLE RT  
WHERE upper(REPORT_STATUS) = 'READY' and TRUNC(CREATED_TS) = '2018-05-20' and TRANSACTION_COUNT > 0 
GROUP BY CUSTOMER

这是我的PreparedStatement:

SELECT CUSTOMER, MAX(TRANSACTION_COUNT) as UNIT_COUNT, :date as EVENT_DATE, 'XYZ File Transfer' as TYPE, 'Financial Report' as EVENT 
FROM  REPORT_TABLE RT  
WHERE upper(REPORT_STATUS) = 'READY' and TRUNC(CREATED_TS) = :date and TRANSACTION_COUNT > 0 
GROUP BY CUSTOMER

参数设置为:

params.addValue(" date"," 2018-05-20");

当我将它作为PreparedStatement运行时,我收到以下错误消息:

nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-418, S    QLSTATE=42610, SQLERRMC=unresolved untyped expression, DRIVER=4.19.66

我尝试查看有关错误消息的一些IBM资源,但没有任何内容与我手头的问题相关。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试使用CAST或DATE()告诉编译器预期的类型,例如:

SELECT CUSTOMER, MAX(TRANSACTION_COUNT) as UNIT_COUNT, DATE(:date) as EVENT_DATE, 'XYZ File Transfer' as TYPE, 'Financial Report' as EVENT 
FROM  REPORT_TABLE RT  
WHERE upper(REPORT_STATUS) = 'READY' and TRUNC(CREATED_TS) = CAST(:date as DATE) and TRANSACTION_COUNT > 0 
GROUP BY CUSTOMER