如何使用SQL Server中的变量参数化MAXDOP提示

时间:2017-05-25 07:42:57

标签: sql-server tsql hints

我想用整数变量@Mdop调用存储过程,以便存储过程中的查询读取如下内容:

SELECT someField 
FROM SomeTable 
OPTION (MAXDOP @Mdop)

有办法做到这一点吗?我找到的唯一简单方法是使用巨型IF THEN ELSE,并且对于我计划传递给存储过程的每个Maxdop值,使用不同的maxdop值重复相同的查询。我发现这种方法原创但非常可怕。

其他想法?

2 个答案:

答案 0 :(得分:1)

您可以像这样使用动态SQL:

DECLARE @MDOP1 INT = 1;
DECLARE @MDOP2 INT = 4;

DECLARE @SQLSTM1 NVARCHAR(4000) = 'SELECT someField  FROM SomeTable  OPTION (MAXDOP ' +  CAST(@Mdop1 AS NVARCHAR) + ')';
DECLARE @SQLSTM2 NVARCHAR(4000) = 'SELECT someField  FROM SomeTable  OPTION (MAXDOP ' +  CAST(@Mdop2 AS NVARCHAR) + ')';

EXEC sp_executesql @SQLSTM1;
EXEC sp_executesql @SQLSTM2;

答案 1 :(得分:0)

动态构建查询,然后执行它。

相关问题