Rerunning this test
<http://www.xray.mpe.mpg.de/mailing-lists/dbi/2001-03/msg00626.html>
against an Oracle 9.2.0.4 results in
TYPE PREC SCALE NAME
3 38 0 CINTEGER
8 0 0 CNUMBER
3 38 0 CNUMBER_38_0
3 11 2 CNUMBER_11_2
3 38 2 CNUMBER_XX_2
8 126 0 CFLOAT
8 11 0 CFLOAT_11
8 63 0 CREAL
8 126 0 CDOUBLE_PRECISION
93 75 0 CDATE
Note that PREC == 0 (instead of 126) for CNUMBER.
This is due to a fix for bug 2235818:
Describing a NUMBER datatype with unspecified scale
through OCI now correctly returns a scale of -127.
Many other OCI clients are upset by this change, e.g.
<http://www.mail-archive.com/[EMAIL PROTECTED]/msg16517.html>
BTW: Oracle addressed that problem in bug 2755842 and
introduced Event 10499 to restore the old behaviour.
Patch attached.
Steffen
--- dbdimp.orig Thu Jun 12 02:04:36 2003
+++ dbdimp.c Tue Dec 16 12:34:35 2003
@@ -2194,6 +2194,9 @@
if (fbh->scale == -127) { /* FLOAT, REAL, DOUBLE_PRECISION */
sql_fbh.dbtype = SQL_DOUBLE;
sql_fbh.scale = 0; /* better: undef */
+ if (fbh->prec == 0) { /* NUMBER; s. Oracle Bug# 2755842, 2235818 */
+ sql_fbh.prec = 126;
+ }
}
else if (fbh->scale == 0) {
if (fbh->prec == 0) { /* NUMBER */