我想調用存儲過程與整型變量@Mdop
因此,在存儲過程中的查詢讀取類似:如何在SQL Server中的變量參數化的MAXDOP提示
SELECT someField
FROM SomeTable
OPTION (MAXDOP @Mdop)
是否有如何做到這一點?我發現的唯一瑣碎方式具有巨型IF THEN ELSE
,並且對於每個Maxdop
值I計劃傳遞給存儲過程,重複具有不同maxdop
值相同的查詢。我覺得這種方法很原始,但非常可怕。
其他想法?
我想調用存儲過程與整型變量@Mdop
因此,在存儲過程中的查詢讀取類似:如何在SQL Server中的變量參數化的MAXDOP提示
SELECT someField
FROM SomeTable
OPTION (MAXDOP @Mdop)
是否有如何做到這一點?我發現的唯一瑣碎方式具有巨型IF THEN ELSE
,並且對於每個Maxdop
值I計劃傳遞給存儲過程,重複具有不同maxdop
值相同的查詢。我覺得這種方法很原始,但非常可怕。
其他想法?
動態建立查詢,然後執行它。
Thankx爲您的快速答案。是的,它肯定會工作,但不會失去存儲過程的好處嗎?我想我不能同時擁有這兩個,但我希望得到一個奇怪的語法或任何能讓我得到相同結果的東西。 –
您可以使用動態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;
* *爲什麼你要指定這樣的MAXDOP?一臺機器上的核心數量不會從一個查詢變爲另一個查詢。這不是你應該在代碼中修改的東西,除非你完全確定它是需要的。通常情況下,DBA知道,而不是開發人員 –