MSSQL XML字段类型的查询和批量替换 XML属性值

SELECT
Id AS Id
,[Description].value('(items[1]/item[@culture="zh-cn"]/@value)[1]','varchar(max)') AS ZNVal

,[Description].query('//item[@culture="en-us"]').value('(/item/@value)[1]','varchar(max)')) AS Descriptions
,[Description] AS Desp
INTO #Temp
FROM DCL.SystemCodeType

DECLARE @xmlField XML;
DECLARE @znValue VARCHAR(max)
DECLARE @Id INT
DECLARE @rowCount INT
Declare @tranError INT
Set @tranError = 0
SELECT @rowCount = COUNT(*) FROM #Temp

BEGIN TRANSACTION
WHILE @rowCount > 0
BEGIN
SELECT @Id=Id,@znValue=ZNVal,@xmlField=Desp FROM #Temp WHERE Id = @rowCount
SET @xmlField.modify('replace value of (items[1]/item[@culture="en-us"]/@value)[1] with sql:variable("@znValue")')
UPDATE DCL.SystemCodeType SET [Description] = @xmlField WHERE Id = @Id

SET @rowCount = @rowCount - 1
END
Set @tranError = @tranError + @@Error
IF @tranError = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
DROP TABLE #Temp
GO

 

转载于:https://www.cnblogs.com/jake-hl/p/7346985.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值