Non vedo alcun motivo per utilizzare SQL dinamico qui. Quando fai è necessario utilizzare SQL dinamico, dovresti considerare sp_executesql
superiore a EXEC()
. Ci sono una serie di ragioni, tra cui:
-
sp_executesql
è più probabile che riutilizzi i piani di query (vedi SQL dinamico - EXEC(@SQL) rispetto a EXEC SP_EXECUTESQL(@SQL) ); -
è molto più semplice passare parametri fortemente tipizzati in
sp_executesql
(evitare l'iniezione SQL meglio che concatenare una stringa); e, -
puoi anche riportare le variabili dall'ambito SQL dinamico all'ambito chiamante, ad esempio:
Questo non è un esempio molto utile, ma è un problema comune durante l'esecuzione di stringhe dinamiche. Ma più precisamente, dovresti considerare l'SQL dinamico solo quando devi, non come prima risorsa.