Sarada, we're tried both, to varying degrees of success. When we started US operations some years ago, we initially outsourced the whole thing, assuming that "locals" would do better from a cultural perspective. It failed miserably, so we moved to an internal team that actually did better from Day One. We later moved it back to an outside team mostly because they could do better in terms of language, intonation, even details of local baseball teams. That worked - we were talking to a different target market when we moved the team out, so I think that helped. We started with SMBs in California but we wound up selling to CIOs in the Midwest.
In a later company in India, we did use an outside agency initially, but the cost-per-lead was so high that we moved to an in-house team and improved not just the cost but the effectiveness, too. So also the employee turn-over - ours was actually less than what we saw with the outside agency.
In hindsight (always 20/20!) I think the reason the outside team in the US failed was not because they were not good enough but because we were not clear enough. While the delivery team was over 200 people, the sales and marketing team was hardly five. And these five people would constantly "innovate", evolving the service and tweaking their message sometimes a couple of times a week. It's the same issue in my current company - while the offering does not change so regularly, we are more adventurous on the marketing side, changing positioning and looking for new niches. And, being a small company, there is much less process and documentation. Conveying continuing changes to someone sitting in a different location takes effort that, instead, can be expended on involving an in-house sales team more closely with Product Management. So here, we use an internal team that sits close to where the product managers are. This has worked very well.
There are obviously other considerations, as we saw in both our contract situations: their salespeople are better trained, they have better/larger systems, their CRM has CTI and so is able to monitor effort-to-return more effectively, their focus on details is better, they handle employee turn-over smoothly and so on. But they did cost more than our internal teams, regardless of effectiveness.
So there's my opinion: if you think your sales team will need to operate in a fluid, unstructured environment, you should probably go the in-house route. If you can put together a clear tactical model and stick to it for some reasonable length of time, an outsourced group may work better. Given, of course, that the cost-to-effect parameters work out OK!