There are two ways in SQL Server to execute a T-SQL statement that has been dynamically built. The most common one is using EXECUTE to run it:
EXECUTE @sqlstatement
In most situations, a better alternative is to use the system stored procedure sp_executesql. This has two major advantages over EXECUTE. First, it can do parameter substitution. Second, it is executed in an execution plan separate from the batch it’s called from. This means that if the SQL statement doesn’t change in other ways than in parameter values, the same execution plan compiled and used in the first execution can be reused by later executions of the statement. Here