Bir XML Şeması Koleksiyonu içinde şu şekilde tanımlanan bir öğe verildiğinde:
<xsd:element name="xid">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="32" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
XQuery kullanarak öğeyi nasıl güncellersiniz?
Öğe, şema koleksiyonundaki ns ad alanında bulunur. Aşağıdaki sorgu öğesi güncellemeye çalışıyorum:
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
ancak bu aşağıdaki hatayı oluşturur:
Msg 9301, Seviye 16, Durum 1, Satır 2 XQuery [cm.item.data.modify ()]: Sunucunun bu sürümünde, 'farklı yayınla' kullanılamaz. Lütfen 'şu şekilde yayınlansın mı?' sözdizimi.
Döküm tamamen kaldırmak ve bu sorguyu kullanırsanız:
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
Bu hatayı alıyorum:
Msg 2247, Seviye 16, Durum 1, Satır 2 XQuery [cm.item.data.modify ()]: Değer, "<anonymous>" türünün bir alt türü olmayan "xs: string" türündedir.
Bu sorguyu yayınlarsam:
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
Bu hatayı alıyorum:
Msg 9312, Seviye 16, Durum 1, Satır 2 XQuery [cm.item.data.modify ()]: 'text ()' basit yazılan veya ' http://www.w3.org/2001/XMLSchema'da desteklenmiyor #anyType 'öğeler, bulundu' (öğe (ns { http://www.anon.com/ }: xid, # anonim)?) * '.
SQL Server 2008 R2'yi hedefliyorum.
Teşekkürler!