Sql server 2008 在SQLServer2008中追加XML复杂元素
我很难想出一个可扩展的解决方案。如何在SQLServer2008中附加复杂的XML元素 例如,我有以下简单的表格:Sql server 2008 在SQLServer2008中追加XML复杂元素,sql-server-2008,tsql,Sql Server 2008,Tsql,我很难想出一个可扩展的解决方案。如何在SQLServer2008中附加复杂的XML元素 例如,我有以下简单的表格: CREATE TABLE my_audit ( [id] [int] IDENTITY(1,1) NOT NULL, [xml_file] [xml] NULL, ); 假设我插入以下XML文件: <Input> <Element1 /> </Input> 这是有效的,并导致: <Input> <
CREATE TABLE my_audit (
[id] [int] IDENTITY(1,1) NOT NULL,
[xml_file] [xml] NULL,
);
假设我插入以下XML文件:
<Input>
<Element1 />
</Input>
这是有效的,并导致:
<Input>
<Element1 />
<Element2 />
</Input>
不幸的是,对于更复杂的元素类型,这是不可伸缩的。考虑添加此XML:
<Input>
<Element3>
<subElement1></subElement1>
</Element3>
</Input>
现在我该怎么办
此类调用是由.net应用程序进行的,该应用程序使用ADO连接到数据库(不,这无法更改)。如果我编写自己的映射库,事情很快就会失控。这不是一个可扩展的解决方案
是否有一个TSQL命令,我可以只传递一个VARCHAR变量“”进行追加?也许还有其他更好的方法?我学习了如何代替硬编码元素、属性等。我可以设置另一个XML变量来处理可能遇到的每一种奇怪情况 因此,我的旧SQL语句:
UPDATE my_audit
SET xml_file.modify('insert element Element2 {""} as last into (/Input)[1]')
WHERE id = 1;
UPDATE my_audit
SET xml_file.modify('insert element Element2 {""} as last into (/Input)[1]')
WHERE id = 1;
变成:
DECLARE @xmlAppend XML = '<Element2 />';
UPDATE my_audit
SET xml_file.modify('insert sql:variable("@xmlAppend") as last into (/Input)[1]')
WHERE id = 1;
DECLARE@xmlpappend-XML='';
更新我的审计
将xml_file.modify('insert sql:variable(@xmlpappend))设置为(/Input)[1]'中的最后一个
其中id=1;