У меня есть две (как-то связанные) таблицы с полями XML. Проблема в том, что я должен обновить XML первого данными из XML второго. Более 100 записей. Как это сделать с помощью TSQL?
Я создал что-то вроде этого.
UPDATE [pwi_new].[dbo].[art]
SET rest.modify('
replace value of (/root/e[k="alien_id"]/v[1]/text())[1]
with sql:column("new.rest.value(
''(/root/e[k="alien_id"/v)[1]'',''varchar(max)'')
")
')
FROM art_new AS new WHERE
(
art.title = new.title
OR art.id = 1352 AND new.id = 119
OR art.id = 1353 AND new.id = 120
OR art.id = 1379 AND new.id = 146
OR art.id = 1380 AND new.id = 147
)
AND art.parent = 1460
Однако это не работает. У меня есть эта ошибка
XQuery [pwi_new.dbo.art.rest.modify ()]: ',' или ')' ожидается
в этой строке:
''(/root/e[k="alien_id"/v)[1]'',''varchar(max)'')
и понятия не имею, как исправить, если это возможно.
Похоже, это невозможно без подзапросов, cte, представлений и т. Д.
TSQL: Как обновить значение тега xml значением тега xml из другой связанной таблицы?
Я знаю этот вопрос. У меня есть более 100 записей, поэтому я хотел бы вариант, который не требует sql: variable