【发布时间】:2013-10-03 11:11:49
【问题描述】:
我收到了那个错误,下面是正在通过的查询
insert into PROD_SUBTYPE_EXCEPTION_DETAILS
(FILE_NAME,PRODUCT_CATEGORY_DESCRIPTION,PERIOD,P3,P15,TOTAL_AUM,TIME_STAMP,ID,REPORTING_YEAR)
values
('P_20130731.DAT','xxx',last_day(to_date('07'||'2013','MMYYYY')),'xxxx','xxx',8049792.04,CURRENT_TIMESTAMP,'eg12345',2010)
如果我在 SQL Developer 中执行相同的查询,它工作正常,但如果我通过我的程序传递它,我会收到该错误。
我的java程序是:
public int insert(String query, Object beanVO, Map<Integer, String> placeHolder)
throws SQLException, ClassNotFoundException, IllegalAccessException,
InvocationTargetException, NoSuchMethodException {
PreparedStatement pstmt = null;
Connection con = null;
try {
con = getConnection(true);
pstmt = con.prepareStatement(query);
setPstmtValues(pstmt, beanVO, placeHolder);
int status=pstmt.executeUpdate();
return status;
}
finally{
if (isBatchMode)
{
this.cleanResources(null, pstmt);
}
else
{
this.cleanResources(con, pstmt);
}
}
}
【问题讨论】:
-
执行的java代码是什么样子的?
-
请分享堆栈跟踪
-
你的语句末尾有分号吗?我在您粘贴的内容中看不到它,但是如果您可以在查询执行之前打印查询,那将有所帮助。通常 SQL 开发人员不会抱怨,但 JDBC 将其视为一种威胁。
-
在程序中检查数据类型,检查是否都与列类型匹配
-
我完全从我的日志中挑选了那个查询并发布了它,并且没有分号