Dan Guzman had an enlightening post on how SQL server caches ad-hoc queries when using inline parameters. Basically the gist is that if your values for any given paramter changes you get variability in you cached procedure. However, if you specify the SqlDbType when adding your parameters, you can avoid this whole problem.