В чем преимущество использования @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.