BatchUpdateException: the batch will not terminate BatchUpdateException: the batch will not terminate oracle oracle

BatchUpdateException: the batch will not terminate


Just found this link:JDBC Batch Update Problem

Apparently, it says there there is

NO WAY WITH ORACLE BATCH JDBC to proceed after first failure,

thus I am resorting to sending the inserts one by one.Thank you

(sorry for not looking better to find the link above before).


there is a workaround that would allow you to use the batch feature. Instead of executing a simple INSERT statement, you can execute a PL/SQL block that will deal with the error appropriately:

BEGIN   INSERT INTO your_table VALUES (?,?,...?);EXCEPTION   WHEN OTHERS THEN      /* deal with the error. For example, log the error id and error msg          so that you can list them after the batch */      INSERT INTO error_table VALUES (?, sqlerrm);END

The performance should be on par with the batch insert (should be faster than individual execution of the statements). You could also call a stored procedure instead of a PL/SQL block.


Oracle itself can, see here: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14250/oci04sql.htm#sthref616

However, it doesn't seem that this functionality is exposed to JDBC, not even in the oracle specific classes.

Because of the rather useless JDBC error handling ("the driver may or may not continue"), I'm always setting a savepoint before the batch, and performing an rollback to that point on error. That's the only JDBC compliant way to establish a known state after an Oracle Batch Error--as far as I know.