1 Reply Latest reply on Feb 24, 2012 5:19 PM by Steve.Clamage-Oracle

    Number big precision between Pro*C and Oracle


      I've to store numbers, in Pro*C, with big precision (like 839299299383473.4385794) over then 16 significative digits in a Number column of anOracle TAble.

      The problem is the C Host variable which has to contain the number to INSERT in Oracle table in a column like NUMBER(28.8).

      If I use C double type, I lost precision and the number 839299299383473.4385794 arrive in Oracle table like 839299299383473.43565879 with casual last digit.

      I tried long double C data type, but the insert statement gives me the error :"ORA-03115: unsupported network datatype or representation".

      The unique solution I found was to use a C char * variable (a classic string value) to contain the value and, in the insert statement, convert it into NUMBER (e.g. TO_NUMBER(REPLACE(string_number, '.',',')) ). In this way work correctly, but I can't make any calculation in C on the number, because it's in stored in a string variable

      Somebody knows the solution? Which kind of Pro*c type variable can I use to comunicate with oracle to store big number?