You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过TSQL反序列化SQL Server中FOR XML RAW生成的XML并实现目标表的UPSERT操作

求助:SQL Server中如何反序列化XML PAYLOAD并实现UPSERT/动态操作?

最近我用SQL Server的FOR XML RAW生成了大量XML数据,把这些数据存在了一张操作日志表里,表的结构是这样的:

  • ACTION CHAR(1):操作类型,I代表插入、U代表更新、D代表删除
  • TABLE_NAME NVARCHAR(25):要执行操作的目标表名称
  • PAYLOAD NVARCHAR(MAX):用FOR XML RAW序列化出来的XML,格式大概是<row COL1="val_col_1" COL2="val_col_2" .. COLN="val_col_n"/>

表里现在有这些示例数据:

ACTION | TABLE_NAME | PAYLOAD
-------|------------|---------
I      | tbl_1      | xmlrow_1
I      | tbl_1      | xmlrow_2
U      | tbl_1      | xmlrow_3
D      | tbl_1      | xmlrow_4
D      | tbl_2      | xmlrow_5

我现在要写一个存储过程,核心需求是:把PAYLOAD里的XML反序列化后,根据ACTION和TABLE_NAME对目标表执行对应的操作。我最想先实现**UPSERT(插入更新)**的功能,如果这个方案走不通的话,退而求其次用动态SQL来做插入、更新、删除,但不管哪种方式,首先得解决XML反序列化的问题——比如我想实现类似下面的更新逻辑:

UPDATE [dbo].[tbl_1] 
SET [COL1] = CURRENT_ROW.COL1 ,[COL2] = CURRENT_ROW.COL2 ,[COL3] = CURRENT_ROW.COL3 
FROM ( -- 这里放反序列化xmlrow_3的结果 ) AS CURRENT_ROW

有没有大佬能给我指点下怎么实现?

内容的提问来源于stack exchange,提问作者Skary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 16:57:35