The title says it all... What are the real world pros and cons of executing a dynamic SQL command in a stored procedure in SQL Server with
EXEC(@SQL)
versus
EXEC SP_EXECUTESQL(@SQL)
?
The title says it all... What are the real world pros and cons of executing a dynamic SQL command in a stored procedure in SQL Server with
EXEC(@SQL)
versus
EXEC SP_EXECUTESQL(@SQL)
?
The big thing about SP_EXECUTESQL is that it allows you to create parameterized queries which is very good if you care about SQL injection.
sp_executesql
is more likely to promote query plan reuse. When using sp_executesql
, parameters are explicitly identified in the calling signature. This excellent article descibes this process.
The oft cited reference for many aspects of dynamic sql is Erland Sommarskog's "The Curse and Blessings of Dynamic SQL".