我们在SQL Server 2012中有一个程序,其中包含如下查询:
SET @sSQL = 'SELECT Column1,
Column2
FROM Table
WHERE Column1 = ' + CONVERT(NVARCHAR, @ColumnID )
@ColumnID是存储过程中的参数。
它创建了许多编译计划。我们为什么以及如何解决它?
答案 0 :(得分:2)
使用sp_executesql
,因此值可以是参数:
SET @sSQL = 'SELECT Column1,
Column2
FROM Table
WHERE Column1 = @ColumnId';
EXEC sp_executesql @sSQL, N'@ColumnId int', @ColumnId = @ColumnId;