几个已编译的计划用于SQL存储过程中的查询

时间:2016-01-19 12:45:16

标签: sql sql-server select sql-server-2012

我们在SQL Server 2012中有一个程序,其中包含如下查询:

    SET @sSQL = 'SELECT Column1,
                        Column2
                 FROM Table
                 WHERE Column1 = ' + CONVERT(NVARCHAR, @ColumnID ) 

@ColumnID是存储过程中的参数。

它创建了许多编译计划。我们为什么以及如何解决它?

1 个答案:

答案 0 :(得分:2)

使用sp_executesql,因此值可以是参数:

SET @sSQL = 'SELECT Column1,
                    Column2
             FROM   Table
             WHERE  Column1 = @ColumnId';

EXEC sp_executesql @sSQL, N'@ColumnId int', @ColumnId = @ColumnId;