Na verdade, não é possível alterar efetivamente
statement_timeout
de dentro de uma função de servidor, isso deve ser feito no lado do cliente antes que a consulta de nível superior seja enviada. Veja uma pergunta semelhante no DBA.SE:Por que “SET LOCAL statement_timeout” não funciona como esperado com as funções do PostgreSQL?
ou este tópico na lista de discussão postgres, que remonta a 2007, mas a resposta negativa ainda se aplica à versão atual:
statement_timeout não funciona no plpgsql por design?