Não veja nenhuma razão para usar SQL dinâmico aqui. Quando você faz precisa usar SQL dinâmico, você deve considerar
sp_executesql
maior preferência do que EXEC()
. Há uma variedade de razões, incluindo:-
sp_executesql
é mais provável que reutilize planos de consulta (consulte SQL dinâmico - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) );
-
é muito mais fácil passar parâmetros fortemente tipados parasp_executesql
(impedindo a injeção de SQL melhor do que concatenar uma string); e,
-
você também pode obter variáveis de dentro do escopo SQL dinâmico de volta para o escopo de chamada, por exemplo:
Esse não é um exemplo muito útil, mas é um problema comum ao executar strings dinâmicas. Mas indo direto ao ponto, você só deve considerar o SQL dinâmico quando for necessário, não como um primeiro recurso.