6
XML 형식이 아닌 ntext 데이터 형식의 열이 있습니다. 그것은 모든 XML 데이터를 저장합니다. 레코드에서 xml 노드를 업데이트해야합니다. "xml 데이터 형식 메서드 'modify'의 잘못된 사용.이 컨텍스트에서는 변형되지 않은 메서드가 필요합니다."라는 오류가 발생합니다.XML 노드 값을 기반으로 레코드에서 XML을 업데이트하는 SQL 업데이트 쿼리?
begin transaction
declare @Cps_Id int;
set @Cps_Id = 236;
declare @Cps_Message nvarchar(1024);
set @Cps_Message = 'updating cpsia message with smoking';
update table_name
set column_name = CONVERT(xml,column_name).modify('replace value of (/root/ProductInformation/CPSIA/CpsiaDetails/Item[CpsiaId=sql:variable("@Cps_Id")]/CpsiaMessage/text())[1] with sql:variable("@Cps_Message")')
WHERE Convert(xml,column_name).exist('/root/ProductInformation/CPSIA/CpsiaDetails/Item[CpsiaId=sql:variable("@Cps_Id")]')=1
rollback
샘플 XML :
<root>
<ProductInformation>
<Name> Truck with Battery Charger</Name>
<Description>Fr.</Description>
<CPSIA>
<CpsiaDetails>
<Item>
<CpsiaId>456</CpsiaId>
<CpsiaMessage>waring</CpsiaMessage>
</Item>
<Item>
<CpsiaId>236</CpsiaId>
<CpsiaMessage>to health</CpsiaMessage>
</Item>
</CpsiaDetails>
</CPSIA>
</ProductInformation>
</root>
"xml 데이터 형식 메서드 'modify'를 잘못 사용하면 오류가 발생합니다.이 컨텍스트에서는 변형되지 않은 메서드가 필요합니다." 임시 테이블을 사용하지 않고 테이블로 단일 업데이트 쿼리를 수정했을 때 .... – DotNetDeveloper
하나의 직접 업데이트 쿼리가 작동하지 않는 경우 "샘플을 게시 할 수 있습니다. 그러면 업데이트 된 임시 테이블에 가입하여 원래 테이블을 업데이트 할 수 있습니다 테이블의 원래 테이블에 키를. " – DotNetDeveloper
위의 코드를 솔루션으로 업데이트하여 가장 가까운 코드를 얻고 시간을내어 주셔서 감사합니다. – DotNetDeveloper