我正在设置一个PreparedStatement,将其用于Kafka消费者。在运行addBatch()
之前,该程序自身会运行executeBatch()
500次。
我的问题是以下PreparedStatement(对格式很抱歉):
PreparedStatement medlemStatement = conn.prepareStatement("MERGE INTO TABLENAME S USING " +
"(SELECT ? COLUMN1, ? COLUMN2, ? COLUMN3, ? COLUMN4, ? COLUMN5, ? COLUMN6, ? COLUMN7, ? COLUMN8, ? COLUMN9" +
"? COLUMN10, ? COLUMN11, ? COLUMN12, ? COLUMN13, ? COLUMN14, ? COLUMN15, ? COLUMN16, ? COLUMN17, ? COLUMN18, ? COLUMN19, ? COLUMN20 FROM DUAL) R " +
"ON (S.COLUMN1=R.COLUMN1 AND S.COLUMN19=R.COLUMN19) " +
"WHEN MATCHED THEN " +
"UPDATE SET " +
"S.COLUMN2=R.COLUMN2, S.COLUMN3=R.COLUMN3, S.COLUMN4=R.COLUMN4, S.COLUMN5=R.COLUMN5, S.COLUMN6=R.COLUMN6, S.COLUMN7=R.COLUMN7, " +
"S.COLUMN8=R.COLUMN8, S.COLUMN9=R.COLUMN9, S.COLUMN10=R.COLUMN10, S.COLUMN11=R.COLUMN11, S.COLUMN12=R.COLUMN12, S.COLUMN13=R.COLUMN13, " +
"S.COLUMN14=R.COLUMN14, S.COLUMN15=R.COLUMN15, S.COLUMN16=R.COLUMN16, S.COLUMN17=R.COLUMN17, S.COLUMN18=R.COLUMN18, S.COLUMN20=R.COLUMN20 " +
"WHEN NOT MATCHED THEN " +
"INSERT (COLUMN1, COLUMN2, COLUMN3, COLUMN4, COLUMN5, COLUMN6, COLUMN7, COLUMN8, COLUMN9, COLUMN10, COLUMN11" +
"COLUMN12, COLUMN13, COLUMN14, COLUMN15, COLUMN16, COLUMN17, COLUMN18, COLUMN19, COLUMN20 " +
"VALUES (R.COLUMN1, R.COLUMN2, R.COLUMN3, R.COLUMN4, R.COLUMN5, R.COLUMN6, R.COLUMN7, R.COLUMN8, R.COLUMN9, R.COLUMN10, R.COLUMN11" +
"R.COLUMN12, R.COLUMN13, R.COLUMN14, R.COLUMN15, R.COLUMN16, R.COLUMN17, R.COLUMN18, R.COLUMN19, R.COLUMN20)"
);
执行executeBatch()
时,出现以下错误信息:
java.sql.BatchUpdateException:ORA-00923:在预期的位置找不到FROM关键字
就我而言,SQL查询看起来正确,但是显然这里有些问题。预先谢谢!
SQL查询看起来正确,但是在executeBatch()
中出了点问题。