Invalid precision value. Error in parameter #. ODBC Error.

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
sjordery
Premium Member
Premium Member
Posts: 202
Joined: Thu Jun 08, 2006 5:58 am

Invalid precision value. Error in parameter #. ODBC Error.

Post by sjordery »

Hi All,

I did a search on this, but although 3 topics came up, none showed a resolution...

I have an EE job that takes data from a dataset and passes through a Transformer, then loads it to an Oracle DB using the ODBC stage. To get the table definition for the input to the ODBC stage, I imported directly from the table, so the metadata matches ok.

Two of the fields in the Orable table are not in the dataset, and are assigned in the Transformer. The job compiles fine.

When I execute the job, it throws up a fatal error message:
APT_CombinedOperatorController,0: [DataDirect][ODBC Oracle Wire Protocol driver]Invalid precision value. Error in parameter 10.
[DataDirect][ODBC Oracle Wire Protocol driver]Invalid precision value. Error in parameter 8.
I am upserting and the SQL (auto-generated) is thus:
INSERT
INTO
#DB_TABLE_P#
(SYMBOLTYPE, SYMBOLVALUE, ENTITYID, EFFECTIVEFROM, EFFECTIVETO, BASELINETIMESTAMP, DITIMESTAMP, GEMIDREFKEY, LEGACYID, RECTIMESTAMP, ISCERTIFIED)
VALUES
(ORCHESTRATE.SYMBOLTYPE, ORCHESTRATE.SYMBOLVALUE, ORCHESTRATE.ENTITYID, ORCHESTRATE.EFFECTIVEFROM, ORCHESTRATE.EFFECTIVETO, ORCHESTRATE.BASELINETIMESTAMP, ORCHESTRATE.DITIMESTAMP, ORCHESTRATE.GEMIDREFKEY, ORCHESTRATE.LEGACYID, ORCHESTRATE.RECTIMESTAMP, ORCHESTRATE.ISCERTIFIED)
and
UPDATE
#DB_TABLE_P#
SET
SYMBOLTYPE = ORCHESTRATE.SYMBOLTYPE, SYMBOLVALUE = ORCHESTRATE.SYMBOLVALUE, ENTITYID = ORCHESTRATE.ENTITYID, EFFECTIVEFROM = ORCHESTRATE.EFFECTIVEFROM, EFFECTIVETO = ORCHESTRATE.EFFECTIVETO, BASELINETIMESTAMP = ORCHESTRATE.BASELINETIMESTAMP, DITIMESTAMP = ORCHESTRATE.DITIMESTAMP, LEGACYID = ORCHESTRATE.LEGACYID, RECTIMESTAMP = ORCHESTRATE.RECTIMESTAMP, ISCERTIFIED = ORCHESTRATE.ISCERTIFIED
WHERE
(GEMIDREFKEY = ORCHESTRATE.GEMIDREFKEY)
I *think* that the fields being flagged are GEMIDREF and ISCERTIFIED - both of which are decimal 38,10. In the tranformer, I am trying to set these to 888 and 0 respectively.

Any help that you can offer, gratefully appreciated as always.

Regards,
Stuart
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

Typically that error message means that you've left one of the Precision fields in the Columns grid empty when the data type requires a precision value. Start by looking in the tenth row of each Columns grid, since the error message refers to the tenth (bound) parameter (or field).
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
reddy
Premium Member
Premium Member
Posts: 168
Joined: Tue Dec 07, 2004 12:54 pm

Post by reddy »

I believe those 2 columns are integers. Please check Oracle column definition. if you are not loading any decimal values into those 2 columns, you should change it to integer and load while loading through ODBC. This will work but you might get a warning.
Post Reply