Search Postgresql Archives

Re: function signature allow "default" keyword

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi


út 16. 5. 2023 v 5:11 odesílatel jian he <jian.universality@xxxxxxxxx> napsal:


On Mon, May 15, 2023 at 5:00 PM Thomas Kellerer <shammat@xxxxxxx> wrote:
jian he schrieb am 15.05.2023 um 10:33:
>
> function idea.
> allow function calling using the default keyword for any of the input arguments.
>
> example: https://dbfiddle.uk/FQwnfdmm
> So something like this "SELECT * FROM customer_orders(2579927, 'order_placed_on DESC', default, 2);"
> should work.


You can use named parameters when calling the function, that will use the default value for those not mentioned:

SELECT *
FROM customer_orders(_customer_id => 2579927,
                     _sort_field_and_direction => 'order_placed_on DESC',
                     _offset => 2);





select  proname
        ,proargtypes
        ,pg_get_expr(pp.proargdefaults,0,true)
        ,pronargdefaults
from    pg_proc     pp
where   pp.proname  = 'customer_orders';
----------return-------------
proname         | customer_orders
proargtypes     | 23 25 23 23 1082 1082
pg_get_expr     | 10, 0, CURRENT_DATE - 30, CURRENT_DATE
pronargdefaults | 4

table insert works, i guess because pg_attribute has column ordinal number (left to right).
but pg_proc only counts the number of arguments that have a default value.

The tables don't support overloading.

I cannot to have tab1(a int, b int), tab1(a int, b int, c int)

but I can have

proc1(int, int), proc1(int, int, int)

Regards

Pavel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux