Page 1 of 1

warning on insert decimal with oracle stage load append mode

Posted: Fri Jan 23, 2009 11:15 am
by mtougui
Hi all,

I have a target oracle table with a few columns declared as NUMBER. I'm getting a warning in the execution of the job that inserts data to this table. the warning is " When checking operator: Column ID_CONTRAT floating point decimal not fully supported. Adjusting scale." the column ID_CONTRAT is declared as number in oracle table and the metadata in datastage is decimal(38,10).

The job does what i need it to do but with warnings for each column declared as number.

I have tried to change the types of my columns to Numeric, Integer, and Bigint but it doesn't change the warning, instead of that it adds more warnings concerning the implicit conversion.

PS: when I change the target to a dataset, the job run perfectly well without warnings.
I'll be very grateful if anybody can help

Posted: Fri Jan 23, 2009 11:28 am
by chulett
Try an exact search of the forums here for "floating point decimal not fully supported" and see if anything it turns up helps.

Posted: Fri Jan 23, 2009 2:17 pm
by throbinson
An Oracle NUMBER without precision or scale (A floating point number) is interpreted by Datastage as DECIMAL(38,10). Also any function call resulting in a numeric result.
One CANNOT change this from the column grid as any metadata you define in the job will be overridden when the stage executes.
Datastage will insist it is a DECIMAL(38,10). Changing the datatype in DataStage will only add warnings as you have found if there is then an implicit conversion problem.

Numerous workarounds have been put forth as you will find when you do a search.

Why would Datastage do that? Why DECIMAL(38,10)? I do not know.

I do know there is a patch (at least for AIX 7.5.2) to the Oracle Enterprise stage that makes the warning go away although the DECIMAL(38,10) remains. Does this patch then mask a potential problem by lulling us into a false sense of security? Only if your job is dealing with the U.S government deficit or the number of meters to Mars and back.
Request the patch from IBM.

Posted: Fri Jan 23, 2009 3:10 pm
by ray.wurlod
throbinson wrote:Why would Datastage do that? Why DECIMAL(38,10)? I do not know.
Because that's what Oracle reports when any client tool retrieves the table definition using SQLColumnAttributes() function and the Oracle column is of unqualified type NUMBER.

warning on insert decimal with oracle stage load append mode

Posted: Wed Jan 28, 2009 4:13 am
by mtougui
Thanks all for your help.

I didn't find the way to avoid the warning in datastage. The alternative solution is to change in the target database (Oracle) the type of my columns from NUMBER to NUMBER(38,10).