使用PreparedStatement.setSQLXML()导致“ ORA-02000缺少列关键字”错误

时间:2019-07-17 19:15:43

标签: java sql xml oracle

当我尝试向Oracle数据库中插入一些数据时出现错误:

Caused by: Error : 2000, Position : 24, Sql = INSERT INTO XMLTABLE (ID, DOC) VALUES (:1 , :2 ), OriginalSql = INSERT INTO XMLTABLE (ID, DOC) VALUES (?, ?), Error Msg = ORA-02000: missing COLUMNS keyword

我的简单代码:

PreparedStatement stmt = null;
        try {
            stmt = conn.prepareStatement("INSERT INTO XMLTABLE (ID, DOC) VALUES (?, ?)");
            String xml = "<record>\n" +
                    "  <name>John</name>\n" +
                    "  <marks>5</marks>\n" +
                    "</record>";

            SQLXML sqlxml = conn.createSQLXML();
            sqlxml.setString(xml);
            stmt.setInt(1,5);
            stmt.setSQLXML(2, sqlxml);
            stmt.executeUpdate();

        } finally {
            if (stmt != null) { stmt.close(); }
        }

我的简单数据库:

CREATE TABLE XMLTABLE (
    id NUMBER(4),
    doc XMLTYPE
);

stmt.executeUpdate()函数期间发生错误,但我认为问题出在stmt.setSQLXML(2, sqlxml)函数中。我使用ojdbc8驱动程序。

当我在此项目中使用SQLXML sqlxml = rs.getSQLXML(1)时,它将起作用。我已经拥有所有必需的库,例如xmlparserv2.jarxdb.jar

0 个答案:

没有答案