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()]:このバージョンのサーバーでは、「としてキャスト」は使用できません。「としてキャスト」を使用してください 構文。
キャストを完全に削除してこのクエリを使用する場合:
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
私はこのエラーを受け取ります:
メッセージ2247、レベル16、状態1、行2 XQuery [cm.item.data.modify()]:値のタイプは「xs:string」であり、予期されるタイプ「<anonymous>」のサブタイプではありません。
このクエリを発行すると:
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 'elements、found'(element(ns { http://www.anon.com/}:xid、#anonymous)?)* '。
SQL Server 2008 R2を対象としています。
ありがとう!