Aparentemente eu precisava fazer
GRANT EXECUTE ON FUNCTION
em vez de GRANT EXECUTE ON PROCEDURE
. Você pensaria que se
GRANT EXECUTE ON PROCEDURE
só funcionou em PROCEDIMENTOS que a mensagem de erro deveria dizer "Código de erro:1305. PROCEDURE businessDayDiff não existe" em vez de "FUNCTION or PROCEDURE"...