我有一个流程步骤,其中我在 SQL Server 列中有一个 XML 文档,我需要更改可能多次出现的节点的文本。Modify() with 'replace' DML 仅在单个节点上运行。更复杂的是,替换需要基于本地维护的查找表进行。
我可以使用 nodes() 来获取节点列表并设计一个查询来适当地连接数据,但那时我不再有 modify() 可以作用的引用。
看来我唯一的选择是创建一个 CLR 过程或函数并使用某种 dotnet 本机 XML 迭代。这不太吸引人,因为业务逻辑将被锁定在源代码中,在过程定义中不可见。有没有办法专门使用 XML 方法进行这种转换?
三个选项浮现在脑海。
使用while循环并一次修改一个节点
使用nodes() 分解XML,修改值,然后使用for xml 重建。
将 XML 转换为字符串并使用 replace()。
无论哪种方式最适合您的情况,都取决于 XML 的形状以及您需要进行何种修改。如果您将带有示例数据和预期输出的表结构添加到问题中,您可能会得到更好的答案。