DECLARE @id int
DECLARE @name nvarchar(20)
SET @id = 5
SET @name = 'Paul'
使用@ParmDefinition的優點是什麼這兩個選項之間的區別:什麼是sp_executesql的
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
到目前爲止,我只看到了overhad的聲明使用@ParmDefinition時@id和@name的數據類型兩次。另一方面,使用@ParamDefinition,「字符串構建」似乎更容易一些。
第二一個參數化您的查詢,這有助於防止SQL注入。 –