O procedimento armazenado não retornará apenas o resultado do último SELECT. Você precisa realmente retornar o valor:
CREATE OR REPLACE FUNCTION fun() RETURNS text AS $$
BEGIN
--- ....
RETURN(SELECT dblink_disconnect());
END
$$ LANGUAGE plpgsql;
Você está recebendo o erro porque o Postgres espera que a função retorne algo do tipo text, mas sua função não retorna nada.