Thread: [DOCS] Bad return type in example

[DOCS] Bad return type in example

From
Nikolaus Thiel
Date:

Dear Doc Writers,

Would it not be better to change the return type of the following two sample functions to numeric ?


CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS integer AS $$
    UPDATE bank
        SET balance = balance - debit
        WHERE accountno = tf1.accountno;
    SELECT balance FROM bank WHERE accountno = tf1.accountno;
$$ LANGUAGE SQL;


CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS integer AS $$
    UPDATE bank
        SET balance = balance - debit
        WHERE accountno = tf1.accountno
    RETURNING balance;
$$ LANGUAGE SQL;


Since debit is of type numeric, balance is (probably) numeric too, so the function ought to return numeric. I guess that the function works as it is using implicit type cast.

With best regards,
Nikolaus Thiel


Attachment

Re: [DOCS] Bad return type in example

From
Peter Eisentraut
Date:
On 3/8/17 04:00, Nikolaus Thiel wrote:
>   * postgresql-9.6-A4.pdf, page 891
>   * https://www.postgresql.org/docs/9.6/static/xfunc-sql.html#XFUNC-SQL-BASE-FUNCTIONS
>
> Dear Doc Writers,
>
> Would it not be better to change the return type of the following two
> sample functions to numeric ?

fixed

>
>
> CREATE FUNCTION tf1 (accountno integer, debit numeric) RETURNS integer AS $$
>     UPDATE bank
>         SET balance = balance - debit
>         WHERE accountno = tf1.accountno;
>     SELECT balance FROM bank WHERE accountno = tf1.accountno;
> $$ LANGUAGE SQL;

--
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services