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