Qual é a vantagem de usar o @ParmDefinition no sp_executesql

DECLARE @id int
DECLARE @name nvarchar(20)
SET @id = 5
SET @name = 'Paul'

Qual é a diferença entre essas duas opções:

Set @SQLQueryInnen = 'SELECT * FROM someTable WHERE ID = ' + @id + ' AND NAME = ''' + @name + ''''
Execute sp_Executesql @SQLQueryInnen

e

Set @SQLQueryInnen = 'SELECT * FROM someTable WHERE ID = @id AND NAME = @name'
Set @ParmDefinition = '@id int, @name nvarchar(20)'
Execute sp_Executesql @SQLQueryInnen, @ParmDefinition, @id

Até o momento, só vejo o overhad para declarar o tipo de dados @id e @name duas vezes, ao usar @ParmDefinition. Por outro lado, a "construção de strings" parece um pouco mais fácil com o @ParamDefinition.

questionAnswers(3)

yourAnswerToTheQuestion