Дано елемент, визначений у колекції схем XML як такий:
<xsd:element name="xid">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="32" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Як би ви оновили елемент за допомогою XQuery?
Елемент знаходиться в просторі імен ns в колекції схем. Я намагався оновити елемент нижче за запитом:
update cm.item
set data.modify(
'declare namespace ns="http://www.anon.com";
replace value of (/ns:*/ns:xid)[1] with "X00011793" cast as element(ns{http://www.anon.com}:xid,#anonymous) ?')
where id = 11793
але це генерує таку помилку:
Повідомлення 9301, рівень 16, стан 1, рядок 2 XQuery [cm.item.data.modify ()]: У цій версії сервера 'cast as' недоступна. Будь ласка, використовуйте команду "Як як?" синтаксис.
Якщо я повністю видаляю команду та використовую цей запит:
update cm.item
set data.modify(
'declare namespace ns="http://www.anon.com";
replace value of (/ns:*/ns:xid)[1] with "X00011793"')
where id = 11793
Я отримую цю помилку:
Msg 2247, рівень 16, стан 1, рядок 2 XQuery [cm.item.data.modify ()]: значення має тип "xs: string", який не є підтипом очікуваного типу "<анонімний>".
Якщо я надсилаю цей запит:
update cm.item
set data.modify(
'declare namespace ns="http://www.anon.com/";
replace value of (/ns:*/ns:xid/text())[1] with "X00011793"')
where id = 11793
Я отримую цю помилку:
Повідомлення 9312, рівень 16, стан 1, рядок 2 XQuery [cm.item.data.modify ()]: 'text ()' не підтримується просто введеним або ' http://www.w3.org/2001/XMLSchema #anyType 'елементи, знайдені' (елемент (ns { http://www.anon.com/ }: xid, # анонім)?) * '.
Я націлений на SQL Server 2008 R2.
Дякую!