我不太确定混合 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();