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.
>


Reply via email to