Problem solved. It's my mistake that treat the ISC_STATUS type as 32 bits integer. If I make it as 64 bits integer, the problem solved.
--- In [email protected], "Chee Yang" <cychau@...> wrote: > > I am using Firebird 2.5 Embedded in 64 bits windows platform. > > I compile my application with Firebird embedded using Delphi XE2 64 bits > platform. > > I create a table: > > CREATE TABLE T_TEST1 ( > DTLKEY INTEGER NOT NULL, > CURRENCYRATE DECIMAL(14, 6), > AMOUNT DECIMAL(16, 2), > SQTY DECIMAL(18, 4), > PRIMARY KEY(DTLKEY) > ) > > Insert a row to table: > > INSERT INTO T_TEST1 (DTLKEY, CURRENCYRATE, AMOUNT, SQTY) > VALUES (1, 9011.2, 1482.8, 1) > > I then execute a SQL Query: > > SELECT CAST(Amount * CurrencyRate AS DECIMAL(18, 8)) / SQTY FROM T_TEST1 > > I receive a strange value from the select query. > > In 32-bits windows, I will encounter error (this is expected error): > > Arithmetic overflow or division by zero has occurred. > arithmetic exception, numeric overflow, or string truncation. >
