В чем преимущество использования @ParmDefinition в sp_executesql

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

В чем разница между этими двумя вариантами:

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

а также

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

Пока я вижу только оверхад для объявления типа данных @id и @name дважды при использовании @ParmDefinition. С другой стороны, «построение строк» ​​кажется немного проще с @ParamDefinition.