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_executesqlczęś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.