1
在將值分配給本地變量時,我發現在SELECT語句上使用OPTION時發現了一些奇怪的語法行爲。當語句以SELECT開始時,它看起來像OPTION是允許的,但如果它是SET命令的一部分,則它是不允許的。SQL服務器SET變量在使用SELECT時不允許使用選項
DECLARE @var CHAR(1)
SET @var = (SELECT '1' OPTION (QUERYTRACEON 2312))
SET @var = (SELECT '1') OPTION (QUERYTRACEON 2312);
SELECT @var = '1' OPTION (QUERYTRACEON 2312)
SELECT @var
粘貼到上述SSMS顯示兩個品種SET被禁止,但在選擇版本是允許的。我想知道我的SET語法是否是錯誤的,以及OPTION的正確用法是什麼,或者這只是行爲,而我需要使用SELECT來設置變量。
您對'SET'的語法是錯誤的。 'OPTION'只能在獨立的'SELECT'語句中使用,而不是'SET'的一部分。您可以在[** here **](https://msdn.microsoft.com/en-us/library/ms189484.aspx)中找到'SET'支持的完整語法,包括您可以傳遞給它的所有選項和它的'SELECT'。另外,這裏有一些關於[** OPTION **]的更多細節(https://msdn.microsoft.com/en-us/library/ms190322.aspx) –