Hi
út 16. 5. 2023 v 5:11 odesílatel jian he <jian.universal...@gmail.com> napsal: > > > On Mon, May 15, 2023 at 5:00 PM Thomas Kellerer <sham...@gmx.net> 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