Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Supprimer le nœud xml de la colonne de table SQL Server 2008 r2 en fonction de la valeur d'attribut

Eh bien, puisque votre attribut XML id est l'espace de noms XML avec le préfixe p5 , vous devez également déclarer et utiliser ce deuxième espace de noms XML dans votre code :

declare @lookupvalueId varchar(50)
declare @ruleId varchar(50)

set @lookupvalueId = 'b897f3ac-b40f-4b96-b438-eb156a26457e'
set @ruleId = 'fc39f423-05c0-4de9-ae46-12fe3c0c279b'

;WITH XMLNAMESPACES ('urn:gjensidige:processguide:201201' as qn,
                     'urn:gjensidige:processguide:201201' as p5)
update 
    pdr_processdefinitionrule
set 
    PDR_RuleXml.modify('delete (/qn:DifficultyRule/qn:FromControls/qn:Control/qn:FilterValues/qn:FilterValue[@p5:Id=sql:variable("@lookupvalueId")])')
where 
    pdr_guid = @ruleId

Voir cette deuxième définition d'espace de noms XML pour p5 ? Voir l'utilisation de cet espace de noms XML dans le qn:FilterValue[@p5:Id=sql:variable("@lookupvalueId")] expression ?