On Thu, Mar 22, 2001 at 05:05:36PM +0100, Steffen Goeldner wrote:
> Tim Bunce wrote:
> >
> > I'd be interested to know what the Oracle ODBC driver returns for
> > various forms of Oracle NUMBER and happiest to do the same in DBD::Oracle.
>
> Even, if the driver is very ugly? We have the chance to
> make it better!
Thanks for the info. Do you have any strong objections to DBD::Oracle
replicating the Oracle ODBC results?
Tim.
> Here our test table (I omit negative scale):
>
> CREATE TABLE TypeTest
> (
> cINTEGER INTEGER
> , cNUMBER NUMBER
> , cNUMBER_38_0 NUMBER ( 38, 0 )
> , cNUMBER_11_2 NUMBER ( 11, 2 )
> , cNUMBER_xx_2 NUMBER ( *, 2 )
> , cFLOAT FLOAT
> , cFLOAT_11 FLOAT ( 11 )
> , cREAL REAL
> , cDOUBLE_PRECISION DOUBLE PRECISION
> )
> /
>
> SQL> desc typetest
> Name Null? Type
> ------------------ -------- ----------------
> CINTEGER NUMBER(38)
> CNUMBER NUMBER
> CNUMBER_38_0 NUMBER(38)
> CNUMBER_11_2 NUMBER(11,2)
> CNUMBER_XX_2 NUMBER(38,2)
> CFLOAT FLOAT(126)
> CFLOAT_11 NUMBER(11)
> CREAL NUMBER(63)
> CDOUBLE_PRECISION FLOAT(126)
>
> Note: CFLOAT_11 (binary prec.) vs. NUMBER(11) (decimal prec.)
> This seems to be a bug in SQL*Plus DESCRIBE.
>
> Now the information from the data dictionary:
>
> select COLUMN_NAME
> , DATA_TYPE
> , DATA_PRECISION
> , DATA_SCALE
> from dba_tab_columns
> where table_name = 'TYPETEST'
> order by COLUMN_ID
>
> COLUMN_NAME DATA_TYPE DATA_PRECI DATA_SCALE
> ------------------ ---------- ---------- ----------
> CINTEGER NUMBER 0
> CNUMBER NUMBER
> CNUMBER_38_0 NUMBER 38 0
> CNUMBER_11_2 NUMBER 11 2
> CNUMBER_XX_2 NUMBER 2
> CFLOAT FLOAT 126
> CFLOAT_11 FLOAT 11
> CREAL FLOAT 63
> CDOUBLE_PRECISION FLOAT 126
>
> The Oracle ODBC driver 8.1.7 returns (via DBD::ODBC! I hope
> they do not mangle the results!):
>
> TYPE PRECISION SCALE NAME
> ---- --------- ----- ------------------
> 3 38 0 CINTEGER
> 8 38 0 CNUMBER
> 3 38 0 CNUMBER_38_0
> 3 11 2 CNUMBER_11_2
> 3 38 2 CNUMBER_XX_2
> 8 38 0 CFLOAT
> 8 4 0 CFLOAT_11
> 8 19 0 CREAL
> 8 38 0 CDOUBLE_PRECISION
>
> Note: Oracle returns decimal precision in all cases
> (and not a binary prec. for FLOAT's).
>
>
> Steffen