1

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

SELECT someField 
FROM SomeTable 
OPTION (MAXDOP @Mdop)

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

其他想法?

4

2 回答 2

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;
于 2017-05-25T07:47:59.593 回答
0

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

于 2017-05-25T07:44:11.203 回答