Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select... update... output...  [new]
Jey1977
Member

Откуда:
Сообщений: 7
Добрый день всем.

Необходимо записать одним оператором запрос

Update StatusTable set ReadFlag = 2 output inserted.*  where ReadFlag is null


но таким образом, чтобы он начинался с SELECT.
Вариант с Declare @TmpTable table(...); Update.. output into...; Select *...; не подходит так как это три оператора.
Это реально надо (не праздный интерес), только не спрашивайте зачем.
Спасибо.
19 сен 18, 15:33    [21679710]     Ответить | Цитировать Сообщить модератору
 Re: select... update... output...  [new]
invm
Member

Откуда: Москва
Сообщений: 8237
Жесть.

Ну извратитесь так:
select * from openrowset('SQLNCLI', 'Server=.;Trusted_Connection=yes', 'Update StatusTable set ReadFlag = 2 output inserted.*  where ReadFlag is null');
19 сен 18, 15:52    [21679744]     Ответить | Цитировать Сообщить модератору
 Re: select... update... output...  [new]
Jey1977
Member

Откуда:
Сообщений: 7
invm, спасибо. Но при этом

SQL Server заблокировал доступ к STATEMENT "OpenRowset/OpenDatasource" компонента "Ad Hoc Distributed Queries", поскольку он отключен в результате настройки конфигурации безопасности сервера.

:)
19 сен 18, 15:57    [21679751]     Ответить | Цитировать Сообщить модератору
 Re: select... update... output...  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5676
Jey1977,

:) OPENQUERY
19 сен 18, 15:58    [21679752]     Ответить | Цитировать Сообщить модератору
 Re: select... update... output...  [new]
invm
Member

Откуда: Москва
Сообщений: 8237
Jey1977,

Ну если "реально надо" проделать желаемое в одной инструкции, то придется разрешить "Ad Hoc Distributed Queries".
19 сен 18, 16:07    [21679766]     Ответить | Цитировать Сообщить модератору
 Re: select... update... output...  [new]
aleks222
Member

Откуда:
Сообщений: 347
Возможно страдальцу сойдет

select a = 1 into #t Update StatusTable set ReadFlag = 2 output inserted.*  where ReadFlag is null


Это, канешно, два оператора, но что-то мне подсказывает, что вряд ли синтаксический разбор запроса делает MS SQL.
Нибось какую-то левую прогу надо надуть.
20 сен 18, 05:59    [21680232]     Ответить | Цитировать Сообщить модератору
 Re: select... update... output...  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27442
aleks222
Нибось какую-то левую прогу надо надуть.
Или автор не знает, что "запросом" от клиентского приложения может быть что угодно.
20 сен 18, 09:55    [21680345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить