I have an FME process that connects to Oracle, reads X and Y coordinates from a table, find attributes in layers and writes data back to a different table in the same Oracle database. The X and Y attributes are defined as a NUMBER with three decimal places in both tables.
It worked well in FME Desktop 2011 SP2. A few weeks ago I upgraded to FME Desktop 2013 SP 1, opened and run the same workspace, but it displayed a warning on some records like:
|WARN |Error converting from C character string to OCI number : `OCI-22062: invalid input string n-.351]'
And FME did not write th evalue to the table. The error occurred for all values > -1 and < 0. In the above case the actual value in the table was -0.351. I don't know much of FME but assume that after reading the numeric value FME converts it to a string and then converts it back to a number before writing to the target table.
If I use the Oracle function TO_CHAR(-0.351), it returns the string '-.351' but when I use the opposite Oracle function TO_NUMBER('-.351') it returns the correct number -0.351
I added a StringReplacer to my process to add '0' before the decimal point when needed and the process runs successfully but I wonder if it is a bug in 2013 since it worked properly in previous versions?
I run both versions of FME Desktop, 2011 and now 2013, in the same environment - Windows 7 64-bit with Oracle client 11.2
Witold