Diberikan elemen, didefinisikan dalam Koleksi Skema XML seperti:
<xsd:element name="xid">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="32" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Bagaimana Anda memperbarui elemen menggunakan XQuery?
Elemen ini ditemukan di dalam namespace ns di koleksi skema. Saya telah mencoba memperbarui elemen kueri di bawah ini:
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
tetapi ini menghasilkan kesalahan berikut:
Msg 9301, Level 16, State 1, Line 2 XQuery [cm.item.data.modify ()]: Dalam versi server ini, 'cast as' tidak tersedia. Silakan gunakan 'cast as?' sintaksis.
Jika saya menghapus gips seluruhnya dan menggunakan kueri ini:
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
Saya mendapatkan kesalahan ini:
Msg 2247, Level 16, Negara 1, Baris 2 XQuery [cm.item.data.modify ()]: Nilainya adalah tipe "xs: string", yang bukan subtipe dari tipe yang diharapkan "<anonymous>".
Jika saya mengeluarkan pertanyaan ini:
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
Saya mendapatkan kesalahan ini:
Msg 9312, Level 16, State 1, Line 2 XQuery [cm.item.data.modify ()]: 'text ()' tidak didukung pada pengetikan yang sederhana atau ' http://www.w3.org/2001/XMLSchema #anyType 'elements, found' (elemen (ns { http://www.anon.com/ }: xid, # anonymous)?) * '.
Saya menargetkan SQL Server 2008 R2.
Terima kasih!
sumber