0

我不太确定混合 JDBC 和 Oracle 批处理......我读到我不能在一个实例上混合它preparedStatment......因为:Oracle 更新批处理模型 - 在同一应用程序中使用两种批处理模型

但我也发现一些说即使在单个应用程序中也不能混合使用... http://docs.oracle.com/cd/B10500_01/java.920/a96654/oraperf.htm

所以知道我不确定问题出在哪里......

我在每次调用函数时创建一个新的准备好的语句:

public void functionCall(int Id)

    PreparedStatement insStm = null;
    String featureName = "";
    String featureTypeName = "";

        String sql = "BEGIN insert into " + TABLE_FEATURE_INSET + " values (?, ?, ?, ?); EXCEPTION WHEN others THEN IF SQLCODE != -1 THEN RAISE; END IF; END;";
        insStm = getConnection().prepareStatement(sql);

        for(xxx)
            for (yyy) {
                for (zzz) {
                    insStm.setObject(1, TypeName);
                    insStm.setObject(2, tableName);
                    insStm.setObject(3, sourceId);
                    insStm.setObject(4, Id);
                    insStm.addBatch();
                }
            }

            // per feature
            insStm.executeBatch();
        }
        statement .close();
}

然后我有时会收到一个错误...:

原因:java.sql.SQLException: operation not allowed: operation cannot be mixed with Oracle-style batching

也许是prepareStatment来自同一连接的问题?我真的不确定。

有人可以帮助我吗?谢谢

编辑: 这个错误是由这个调用引起的:insStm.addBatch();

4

0 回答 0