2015-12-21 4 views
1

Я нашел некоторое нечетное синтаксическое поведение при использовании OPTION в инструкции SELECT при назначении значений локальным переменным. Похоже, что OPTION разрешен, когда оператор начинается с SELECT, но если он является частью команды SET, то он запрещен.Переменная SQL SET 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'. Вы можете найти [** здесь **] (https://msdn.microsoft.com/en-us/library/ms189484.aspx) полный синтаксис, поддерживаемый 'SET', включая все параметры, которые вы можете передать ему и его 'SELECT'. Кроме того, вот некоторые подробности в [** ОПЦИИ **] (https://msdn.microsoft.com/en-us/library/ms190322.aspx) –

ответ

1

OPTION Clause (Transact-SQL)

Это положение может быть задано в SELECT, DELETE, UPDATE и MERGE заявления.

+0

Спасибо! Я искал использование SET в документации, но мне, очевидно, нужно было изменить этот поиск для использования OPTION. –