【问题标题】:java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly endedjava.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束
【发布时间】: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 将其视为一种威胁。
  • 在程序中检查数据类型,检查是否都与列类型匹配
  • 我完全从我的日志中挑选了那个查询并发布了它,并且没有分号

标签: java oracle jdbc


【解决方案1】:

很抱歉这段代码现在工作正常,我调用了错误的插入方法,所以我得到了这个异常。

谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多