No se si sea lo que buscas pero aqui te envio lo que acabo de hacer:
esta es una funcion pl_pgsql, obviamente todo el codigo
CREATE OR REPLACE FUNCTION suma(sumandos anyarray)
RETURNS int8 AS
$BODY$DECLARE
suma integer;
end_idx integer;
cur_idx integer;
BEGIN
cur_idx:= array_lower( sumandos, 1 );
end_idx:= array_upper( sumandos, 1 );
suma:=0;
WHILE cur_idx<=end_idx LOOP
suma:=suma+sumandos[cur_idx];
cur_idx:=cur_idx+1;
END LOOP;
RETURN suma;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION suma(sumandos anyarray) OWNER TO postgres;
y para llamarla debe ser de la siguiente manera:
select suma(ARRAY[1,2,3,15,21,8]);
Espero te sea de ayuda.. Chao