数据库报错: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null
问题
我在用org.springframework.jdbc.core.JdbcTemplate
执行这样一句sql时报错了:
INSERT INTO customerbranch
(id , OPTIMISTIC , frp_id , paymentchannel , customer_id ,bank_id ,updatetime)
SELECT NEXT VALUE FOR customerbranch_ID_SEQUENCE , 0, 1005, 'NET' , ?, bankid , CURRENT_TIMESTAMP
FROM
(
SELECT DISTINCT f.bank_Id AS bankid
from frpbusiness fb, frp f
where f.ID = fb.id
and fb.BUSINESS in ('DEBIT', 'CREDIT', 'B2B')
)
错误信息主要是这个:
com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null
但是奇怪的是,我在DBeaver中,将?替换为参数时,可以正常执行。
分析
百度了很久,找到这样一篇问答,其中提到了一句:“select list中不能有‘?’吧”
然后我将sql中的?替换为实际参数,再在代码中执行一遍,果然ok了。
解决
select ? from ……
的写法,是我以前使用mybatis时惯用的写法。但是JdbcTemplate中不能这样写。