If you want to have the flexibility of dynamic SQL but better persistence of parameterized execution plans, you should consider using
sp_executesql instead of
EXEC in your stored procedures. The syntax for
sp_executesql is as follows:
sp_executesql @SQL_commands, @parameter_definitions, param1,...paramN
sp_executesql operates just as the
EXEC statement with regard to the scope of names, permissions, and database context. However,
sp_executesql is more efficient for executing the same SQL commands repeatedly when the only change is the values of the parameters. Because the SQL statement remains constant and only the parameters change, SQL Server is more likely to reuse the execution plan generated ...