Page 1 of 1

Extended to number

Posted: Wed 14 Mar 2007 12:41
by alexm
I need to write Extended value to Number column in Oracle.
When I use this code

Code: Select all

 var l_s1: Extended;
begin
 SetSP.Prepare;
 SetSP.Params.ParamByName('P_NAME').AsString := 'OD&TS_Data';
 SetSP.Params.ParamByName('P_CDP').AsString := 'CAGZ';
 SetSP.Params.ParamByName('P_TIMESCALE').AsString := 'GLO';
 SetSP.Params.ParamByName('P_DMJDB').AsFloat := 53855;
 SetSP.Params.ParamByName('P_DMJDE').AsFloat := 53857;
 SetSP.Params.ParamByName('P_DET').AsInteger := 5;
 l_s1 := 0.00000034357227724663589;
 SetSP.Params.ParamByName('P_S1').AsFloat := l_s1;
 SetSP.Params.ParamByName('P_S2').AsFloat := 0;
 SetSP.Params.ParamByName('P_S3').AsFloat := 0;
 SetSP.Params.ParamByName('P_MODE').AsInteger := -1;
 SetSP.Execute;
 OraSession1.commit;
end;
the value 0.000000343572277246636 enters into column S1 instead of valid value 0.00000034357227724663589.

When I use this code

Code: Select all

 var l_s1: Extended;
begin
 SetSP.Prepare;
 SetSP.Params.ParamByName('P_NAME').AsString := 'OD&TS_Data';
 SetSP.Params.ParamByName('P_CDP').AsString := 'CAGZ';
 SetSP.Params.ParamByName('P_TIMESCALE').AsString := 'GLO';
 SetSP.Params.ParamByName('P_DMJDB').AsFloat := 53855;
 SetSP.Params.ParamByName('P_DMJDE').AsFloat := 53857;
 SetSP.Params.ParamByName('P_DET').AsInteger := 5;
 l_s1 := 0.00000034357227724663589;
 SetSP.Params.ParamByName('P_S1').AsString := FloatToStrF(l_s1, ffGeneral, 20, 2);
 SetSP.Params.ParamByName('P_S2').AsFloat := 0;
 SetSP.Params.ParamByName('P_S3').AsFloat := 0;
 SetSP.Params.ParamByName('P_MODE').AsInteger := -1;
 SetSP.Execute;
 OraSession1.commit;
end;
the value 0.00000034357227724663589 enters into column S1.

But how I can write extended to number without to string conversion?

Posted: Thu 15 Mar 2007 08:31
by Plash
Values of the Extended type can be written to database without precision loss using the AsString property only.