Hello,
In PostgreSQL 9.3 I have function with many parameters
Code:
CREATE OR REPLACE FUNCTION public.pd_update_product(p_id integer, p_title character varying, p_status type_productstatus, p_sku character varying, p_user_id integer, p_regular_price type_money, p_sale_price type_money, p_in_stock boolean, p_short_description character varying, p_description text, p_has_attributes boolean, p_downloadable boolean, p_virtual boolean, p_category_list integer[] DEFAULT NULL::integer[], p_tag_list integer[] DEFAULT NULL::integer[], p_attributes_list character varying[] DEFAULT NULL::character varying[], p_created_at timestamp without time zone DEFAULT NULL::timestamp without time zone)
 RETURNS integer
 LANGUAGE plpgsql
AS $function$
  begin
    IF p_id <= 0 THEN
...
Running sql
Code:
select * from pd_update_product( 0, 'Product title_2016-11-07 07:34:14', 'A', 'sku_2016-11-07 07:34:14', 165, 98.76, 65.32, TRUE, 'short_description_2016-11-07 07:34:14', 'description_2016-11-07 07:34:14', TRUE, TRUE, TRUE, ARRAY[164,161,169]::integer[], ARRAY[164,168,172]::integer[], ARRAY [ ARRAY[ 'S:61','800' ], ARRAY[ 'S:63','840' ], ARRAY[ 'S:64','851' ] ]::varchar(255)[][] )
It works ok

But when I run sql showing parameters name, like :
Code:
select * from pd_update_product( p_id := 0, p_title := 'Product title_2016-11-07 07:34:14', p_status := 'A', p_sku := 'sku_2016-11-07 07:34:14', p_user_id := '165', p_regular_price := 98.76, p_sale_price := 65.32, p_in_stock := TRUE, p_short_description := 'short_description_2016-11-07 07:34:14', p_description := 'description_2016-11-07 07:34:14', p_has_attributes := TRUE, p_virtual := TRUE, p_downloadable := TRUE, p_category_list := ARRAY[164,161,169]::integer[], p_tag_list := ARRAY[164,168,172]::integer[], p_attribute_list := ARRAY [ ARRAY[ 'S:61','800' ], ARRAY[ 'S:63','840' ], ARRAY[ 'S:64','851' ] ]::varchar(255)[][] )
I got error:
Code:
no function matches the given name and argument types. You might need to add explicit type casts.
Last parameter p_attribute_list raise error : if to remove it in last sql - it would work ok.
Why error, as 1st sql works ok and I do not see the syntax difference and how to fix it?

Thanks!