Page 1 of 1

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

Posted: Fri Dec 07, 2007 11:40 am
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

Posted: Fri Dec 07, 2007 1:40 pm
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).

Posted: Wed Jun 11, 2008 8:02 pm
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.