setDouble On INSERT Corrupts Data In NUMBER Column Using Oracle10g JDBC Driver (Doc ID 313373.1)

Last updated on AUGUST 03, 2016

Applies to:

JDBC - Version: 10.1.0.2 to 10.1.0.5
This problem can occur on any platform.

Symptoms

setDouble on an INSERTed NUMBER value corrupt data in Column

Subsequent SELECTs on the corrupted data will fail with ORA-7445

The stack will look like (On Solaris 8.1.7.4):
lnxadd evaabo evaopn2 kpofcr qertbFetch

On windows 8.1.7.4:
lnxadd evaabo evaopn2 kpofcr qerstRowP qertbFetch qerstFetch
On Windows 10.1.0.4:
lnxadd evaadd kpofcr qerstRowP kdstf0000101km kdsttgr qertbFetch qerstFetch

A SQL Trace will reveal th error

    "An invalid number has been seen. Memory contents are"

  1. Fails with Oracle JDBC Driver 10.1.0.2.0
  2. Fails with Oracle JDBC Driver 10.1.0.3.0
  3. Fails with Oracle JDBC Driver 10.1.0.4.0



Work OK with Oracle JDBC Driver 9.2.0.6.0 and 8.1.7

Reproduced with testcase:

double xx = -0.0008;
ps = conn.prepareStatement("insert into sal (n) values (?)");
ps.setDouble(1, xx);

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms