Se ingen grund til at bruge dynamisk SQL her. Når du gør skal bruge dynamisk SQL, bør du overveje sp_executesql
højere i præference end EXEC()
. Der er en række årsager, herunder:
-
sp_executesql
er mere tilbøjelige til at genbruge forespørgselsplaner (se Dynamisk SQL - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) ); -
det er meget nemmere at overføre stærkt indtastede parametre til
sp_executesql
(forhindrer SQL-injektion bedre end at sammenkæde en streng); og, -
du kan også få variabler fra det dynamiske SQL-omfang tilbage til det kaldende område, for eksempel:
Det er ikke et meget nyttigt eksempel, men det er et almindeligt problem, når man udfører dynamiske strenge. Men mere til pointen, du bør kun overveje dynamisk SQL, når det er nødvendigt, ikke som en første udvej.