On 30-1-2018 12:24, [email protected] [firebird-support] wrote:
> For DB upgrade (from 1.5 to 3.0) I need to define custom internal 
> function like this:
> 
> create or alter function F_ABS (
>      VAR_1 double precision)
> returns integer
> AS
> declare variable result double precision;
> 
> begin
> 
>    result = abs(var_1);
>    return result;
> 
> end
> 
> 
> But I am confused. My experiments assert that ASB internal function is 
> polymorphic - it returns BIGINT for BIGINT argument and DOUBLE PRECISION 
> for DOUBLE PRECISION arguments, it can be tricky to determine the return 
> type if string arguments is given (and implicit conversion occurs).
> 
> I would like that F_ABS has this polymorphic nature of ABS. How should I 
> declare F_ABS to have this polymorphic nature?

As far as I'm aware, that is simply not possible. UDFs (and the new 
Firebird 3 PSQL functions) must explicitly declare their type, while 
built-ins have access to additional type information at execution time.

Mark
-- 
Mark Rotteveel

Reply via email to