Sehen Sie hier keinen Grund, dynamisches SQL zu verwenden. Wenn Sie tun dynamisches SQL verwenden müssen, sollten Sie sp_executesql
in Betracht ziehen höher bevorzugt als EXEC()
. Dafür gibt es verschiedene Gründe, darunter:
-
sp_executesql
eher Abfragepläne wiederverwendet (siehe Dynamic SQL - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) ); -
Es ist viel einfacher, stark typisierte Parameter an
sp_executesql
zu übergeben (SQL-Einschleusung besser vereiteln als eine Zeichenfolge verketten); und, -
Sie können auch Variablen aus dem dynamischen SQL-Bereich zurück in den aufrufenden Bereich bringen, zum Beispiel:
Das ist kein sehr nützliches Beispiel, aber es ist ein häufiges Problem bei der Ausführung dynamischer Zeichenfolgen. Aber was noch wichtiger ist, Sie sollten dynamisches SQL nur dann in Erwägung ziehen, wenn es sein muss, und nicht als erste Möglichkeit.