thank you for your answer, the function is declared as:

FUNCTION wtt_discount_account(IN in_phonenumber varchar(20),IN in_balanceid 
integer,IN in_chgval numeric(10,2))

i chose numeric because is supposed to be better for numbers/money operations, 
supposed to be exact,
i would not want to loose precision because that is money, is there any other 
way which does not 
involve loosing precision ? thankS!!

> From: t...@sss.pgh.pa.us
> To: jpablolorenze...@hotmail.com
> CC: pgsql-general@postgresql.org
> Subject: Re: [GENERAL] numeric data type
> Date: Tue, 22 Sep 2015 16:07:36 -0400
> 
> "Juan Pablo L." <jpablolorenze...@hotmail.com> writes:
> > Hi, i m writing a C module (extension),  the procedure has a parameter that 
> > is of type numeric, 
> > inside the function i can not read the parameter or so it seems, this what 
> > is do:
> 
> > float8 db_balance,in_chgval;
> 
> > in_chgval = PG_GETARG_FLOAT8(2);
> 
> > elog(INFO,"in_chgval = %0.2f",in_chgval);
> 
> If the C code is written that way, the function has to be declared to take
> type float8 (a/k/a double precision), not numeric.
> 
> The parser will insert a conversion from numeric to float8 automatically,
> so the function will still work with a numeric data column.  You might
> lose some precision in the conversion though.
> 
>                       regards, tom lane
                                          

Reply via email to