Не виждате причина да използвате динамичен SQL тук. Когато направите трябва да използвате динамичен SQL, трябва да помислите за sp_executesql
с по-високо предпочитание от EXEC()
. Има различни причини, включително:
-
sp_executesql
е по-вероятно да използва повторно планове за заявки (вижте Dynamic SQL - EXEC(@SQL) срещу EXEC SP_EXECUTESQL(@SQL) ); -
много по-лесно е да подадете строго типизирани параметри в
sp_executesql
(осуетяване на SQL инжектиране по-добре от конкатениране на низ); и, -
можете също така да получите променливи от динамичния SQL обхват обратно към извикващия обхват, например:
Това не е много полезен пример, но е често срещан проблем при изпълнение на динамични низове. Но по-важното е, че трябва да обмисляте динамичен SQL само когато трябва, а не като първо средство.