एक तत्व को देखते हुए, 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
लेकिन यह निम्नलिखित त्रुटि उत्पन्न करता है:
Msg 9301, Level 16, State 1, Line 2 XQuery [cm.item.data.modify ()]: सर्वर के इस संस्करण में, 'कास्ट के रूप में' उपलब्ध नहीं है। कृपया 'कास्ट के रूप में उपयोग करें?' वाक्य - विन्यास।
यदि मैं पूरी तरह से कास्ट हटा देता हूं और इस क्वेरी का उपयोग करता हूं:
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, Level 16, State 1, Line 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
मुझे यह त्रुटि मिली:
Msg 9312, स्तर 16, राज्य 1, पंक्ति 2 XQuery [cm.item.data.modify ()]: 'पाठ ()' सरल टाइप किए गए या ' http://www.w3.org/2001/XMLSchema ' पर समर्थित नहीं है #anyType 'तत्व, पाया गया' (तत्व (ns { http://www.anon.com/ }: xid, # अनाम;)) * '।
मैं SQL Server 2008 R2 को लक्षित कर रहा हूं।
धन्यवाद!