我有以下密码,
@MasterXML= '
<Report MustUnderstand="df" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily">
<DataSets>
<DataSet Name="'+@Datasetname+'">
<Query>
</Query>
<Fields>
<Field>
</Field>
</Fields>
</DataSet>
</DataSets>
</Report> '
WHILE @i <= @Cnt
BEGIN
Select @xml=
(
SELECT @cname AS [@Name]
,@cname AS [DataField]
,'System.String' AS [rd:TypeName]
FOR XML PATH('Field')
);
SET @i = @i + 1
SET @MasterXML.modify(' insert sql:variable("@xml") as last into (Fields)[1] ' )
end
select @MasterXML
我正在生成一个xmlat@xml through循环,我想在后面插入它
我尝试了
SET @MasterXML.modify(' insert sql:variable("@xml") as last into (Fields)[1] ' )
,但生成的字段不相加。有人能帮我吗?
最佳答案
@MasterXML
具有默认的命名空间,因此需要使用该命名空间引用节点。
set @MasterXML.modify('
declare default element namespace "http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition";
insert sql:variable("@xml") as last into (/Report/DataSets/DataSet/Fields)[1]');
注意,要添加到
http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition
的xml中的元素不使用名称空间,因此将为这些元素添加@MasterXML
。如果希望它们是同一名称空间的一部分,则必须在xmlns=""
查询中指定。Add Namespaces to Queries with WITH XMLNAMESPACES
关于sql-server - 在特定节点SQL Server上插入Xml,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49525146/