Nie ma tutaj powodu, aby używać dynamicznego SQL. Kiedy robisz musisz używać dynamicznego SQL, powinieneś rozważyć sp_executesql
wyższy w preferencjach niż EXEC()
. Istnieje wiele powodów, w tym:
-
sp_executesql
częściej używa planów zapytań (patrz Dynamiczny SQL - EXEC(@SQL) kontra EXEC SP_EXECUTESQL(@SQL) ); -
znacznie łatwiej jest przekazywać silnie wpisane parametry do
sp_executesql
(lepsze zapobieganie wstrzykiwaniu SQL niż łączenie ciągu); i, -
możesz również pobrać zmienne z zakresu dynamicznego SQL z powrotem do zakresu wywołującego, na przykład:
Nie jest to zbyt przydatny przykład, ale jest to częsty problem przy wykonywaniu ciągów dynamicznych. Ale co ważniejsze, powinieneś brać pod uwagę dynamiczny SQL tylko wtedy, gdy musisz, a nie w pierwszej kolejności.