我想调用一个带有整数变量的存储过程,@Mdop
以便存储过程中的查询读取如下内容:
SELECT someField
FROM SomeTable
OPTION (MAXDOP @Mdop)
有没有办法做到这一点?我发现的唯一简单的方法是拥有一个巨大的,并且对于我计划传递给存储过程IF THEN ELSE
的每个值,使用不同的值重复相同的查询。我发现这种方法很原始,但非常可怕。Maxdop
maxdop
其他想法?
我想调用一个带有整数变量的存储过程,@Mdop
以便存储过程中的查询读取如下内容:
SELECT someField
FROM SomeTable
OPTION (MAXDOP @Mdop)
有没有办法做到这一点?我发现的唯一简单的方法是拥有一个巨大的,并且对于我计划传递给存储过程IF THEN ELSE
的每个值,使用不同的值重复相同的查询。我发现这种方法很原始,但非常可怕。Maxdop
maxdop
其他想法?
您可以像这样使用动态 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;
动态构建您的查询,然后执行它。