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'를 사용할 수 없습니다. '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
이 오류가 발생합니다.
메시지 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를 대상으로합니다.
감사!