xquery remplace la valeur si le noeud existe

Je travaille avec xQuery et j'essaie de replace la valeur de l'élément de test si la balise Active n'existe pas sous l'élément User .

(J'ai ajouté des citations pour pouvoir l'afficher correctement ici …)

 declare @testXML xml = ' <USER> <ID>10</ID> <TEST>1</TEST> </USER>' set @testXML.modify('if (exists(/USER/Active)=false) then replace value of /USER/TEST with "2" else ()') select @testXML 

Pour cela, j'ai cette erreur:

XQuery [modify ()]: Erreur de syntaxe près de 'value', attendu 'else'.

Qu'est-ce que je me suis trompé?

Vous n'êtes pas autorisé à intégrer la replace value of ... with .. dans une expression.

De replace la valeur de (XML DML)

 replace value of Expression1 with Expression2 

Vous pouvez utiliser quelque chose comme ça à la place:

 set @testXML.modify('replace value of (/USER[not(Active)]/TEST/text())[1] with "2"') 

SQL Fiddle