2015-12-21 78 views
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來設置變量。

+3

您對'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) –

回答

1

OPTION Clause (Transact-SQL)

這一條款可以在SELECT中指定,DELETE,UPDATE和MERGE語句 。

+0

謝謝!我在文檔中搜索使用SET,但我顯然需要改爲使用OPTION進行搜索。 –

相關問題