Как обновить таблицу в запросе связанного сервера из локального набора результатов?

Я выполняю хранимую процедуру на локальном сервере SQL Server.

Экземпляр SQL-сервера связан с экземпляром DB2 в нашей i-й серии.

У меня есть набор результатов, который генерируется с помощью оператора OPENQUERY, присоединенного к локальной таблице. Это всего лишь список идентификаторов.

Как запустить обновление с помощью OPENQUERY с помощью

WHERE id IN (idListFromPreviousQuery) 

типа.

В идеале, я ищу решение на основе набора, а не курсор / петлю, я просто не могу понять, как это сделать.

Вы можете использовать WITH или temp_table:

 SELECT id INTO #temptable FROM ...; UPDATE linked_server.db_name.schema_name.table_name SET col_name = ... WHERE id IN (SELECT id FROM #temptable); 

или:

 WITH cte(id) AS ( SELECT id FROM ... ) UPDATE linked_server.db_name.schema_name.table_name SET col_name = ... WHERE id IN (SELECT id FROM cte); 

РЕДАКТИРОВАТЬ:

 WITH cte(id) AS ( SELECT id FROM ... ) UPDATE oq SET col_name = ... FROM OPENQUERY([LINKEDSERVER], 'select ... from ...') oq WHERE oq.id IN (SELECT id FROM cte); 
Давайте будем гением компьютера.