ERRO: os parâmetros de entrada após um com valor padrão também devem ter padrões

Estou tentando definir o valor padrão para uma variável dentro da função na lista de parâmetros, mas obtendo um erro:

ERROR: input parameters after one with a default value must also have defaults
Exemplo:
 Create or replace function test(name varchar default null
                               , city varchar default null
                               , phonenumber varchar(20) default null
                               , out sno bigint, address varchar)
   returns void as
 $
 Declare 
        phonenumber AS VarChar(20);
 Begin
        phonenumber : =phonenumber; 

    SELECT sno = MAX(ssno)+1 FROM emp;

    IF(sno IS NULL)  then
           sno=IDENT_CURRENT('emp')+1;
    end;

    raise info '%',name;
    raise info '%',city;
    raise info '%',phonenumber;
    raise info '%',address;

    insert into emp(ename,ecity,ephonenumber,eaddress)
    values(name,city,phonenumber,address);

 end;
 $
 langauge plpgsql;

questionAnswers(2)

yourAnswerToTheQuestion