Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Oracle PreparedStatement Batch Insert problem
Hi all,
I'm trying to do a batch insert of various values into a two column table, eg:
sQuery = "INSERT INTO list (id1, " + id2) " + "VALUES (?, " + "(SELECT id2 " + "FROM list2 " + "WHERE name = ?) " + ")"; // Prepare the create statement PreparedStatement createStatement = prepareStatement(sCredentialListQuery); for (i = 0; i < 1000; i++) {
// Set the parameters to create the credential list
createStatement.setInt(1, id); createStatement.setString(2, name[i]);
// add to batch - doesn't work (driver bug?)
createStatement.addBatch(); } createStatement.executeBatch();
The table has only two columns, which are both foreign keys, and together make up the primary key. The problem is that everytime I try to execute the batch, I get a UNIQUE constraint violation. I disabled the PK constraint, and then observed that the batch tries to insert identical values (ie, even though name[i] is presenting different values, the batch tries to insert the same value for each iteration).
The problem doesn't happen if I do the updates individually using executeUpdate(). It also occurs using Oracle's proprietary batching (i.e. set the executeBatch to something other than 1). If I add a clearParameters() in anywhere, I get the 'Missing IN or OUT parameter at index:: 1' exception.
I'm using Oracle JDBC 9.2.0.1 Drivers with Sun JDK1.4, but I had the same problems with the 8.1.7.1. This is connecting to ORacle 8.1.7 btw.
Any ideas?
tia,
chris. Received on Tue Aug 13 2002 - 05:26:50 CDT