This is probably the best explanation around on the different dynamic Sql approaches and the performance and benefits of each of them. If you are using Sql Server 2005 basically you should be using sp_executesql due to how it can cache the query plan