Ne voyez aucune raison d'utiliser SQL dynamique ici. Quand vous faites besoin d'utiliser SQL dynamique, vous devriez considérer sp_executesql
supérieur de préférence à EXEC()
. Il existe diverses raisons, notamment :
-
sp_executesql
est plus susceptible de réutiliser les plans de requête (voir Dynamic SQL - EXEC(@SQL) contre EXEC SP_EXECUTESQL(@SQL) ); -
il est beaucoup plus facile de passer des paramètres fortement typés dans
sp_executesql
(déjouer mieux l'injection SQL que concaténer une chaîne) ; et, -
vous pouvez également récupérer des variables de l'étendue SQL dynamique vers l'étendue appelante, par exemple :
Ce n'est pas un exemple très utile, mais c'est un problème courant lors de l'exécution de chaînes dynamiques. Mais plus précisément, vous ne devriez envisager le SQL dynamique que lorsque vous le devez, et non en premier recours.